Redis con bota de resorte

Nov 28 2022
Introducción
En esta publicación, discutiremos Redis, Redis es una base de datos NoSQL basada en valores clave que se puede usar para múltiples propósitos. Es de código abierto y es un almacén de estructura de datos InMemory.
Foto de josh Glauser en Unsplash

En esta publicación, discutiremos Redis , Redis es una base de datos NoSQL basada en valores clave que se puede usar para múltiples propósitos. Es de código abierto y es un almacén de estructura de datos InMemory. Porque Redis admite todas las estructuras de datos básicas como lista, conjunto, mapa y conjunto ordenado.

Con Redis podemos desarrollar diferentes tipos de aplicaciones, como aplicaciones de chat, aplicaciones de almacenamiento de sesiones, paneles de juegos, etc.

Si desea aprender Redis, primero comprenda las diferentes estructuras de datos que admite Redis, además de los comandos con los que podemos almacenar y obtener datos de Redis.

Algunos comandos importantes

Redis admite String, Set, Sorted Set, List y HashMap como valores clave. A continuación se muestran algunos comandos básicos para comprender las diferentes estructuras de datos.

String 
SET foo bar (foo is key, bar is value)
GET foo
bar
HashMap

HMSET student name: "shubham" age: 25
HGETALL student
List
LPUSH product car
LPUSH product bike

LRANGE product 0 10
Set
SADD product car
SADD product bike

SMEMBERS product

Casos de uso de Redis

  1. Redis se puede utilizar como una base de datos NoSQL basada en valores clave.
  2. Redis se puede utilizar como proveedor de caché.
  3. Redis se puede usar como editor y suscriptor, que se usa en el procesamiento de eventos.
  4. Redis se puede utilizar como un almacén de sesión.
  5. Redis se puede utilizar en aplicaciones de chat.

Entonces, si tiene algún interés después de leer esto y ahora desea practicar un poco en Redis, configure el servidor Redis en su sistema.

  1. Instale homebrew en su sistema si no está allí.
  2. Los comandos Ejecutar a continuación secuencialmente
  3. brew install redis
    
    After succesfull installation 
    
    brew services start redis
    
    After starting redis if you want to try above commands
    
    redis-cli
    
    To test whether redis server is working
    
    PING
    
    If yu get PONG then its connected
    
    If you want to monitor which all commands are getting executed on redis
    
    redis-monitor
    

Entonces, después de esto, si desea usar Redis desde algún otro sistema, necesita un cliente que interactúe con el servidor Redis.

Ahora, en esta parte, veremos cómo podemos usar Redis con Spring Boot y usarlo como una base de datos NoSQL.

Configuración

El primer paso es crear un proyecto de arranque de Spring de muestra a partir del inicializador de Spring y agregar la dependencia spring-boot-starter-data-redis .

Ahora, después de importar el proyecto a su IDE favorito, cree paquetes y clases.

La primera clase será para la configuración. Tenemos dos controladores para Redis, uno es Jedis, otro es lechuga (se inicializa de forma perezosa y, en cuanto al rendimiento, también es mejor).

Además del controlador, necesitamos una plantilla para realizar operaciones en el servidor Redis, de la misma manera que tenemos RestTemplate para realizar operaciones de descanso.

package com.redisexample.redisdemo.config;

import org.springframework.boot.autoconfigure.data.redis.RedisProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.repository.configuration.EnableRedisRepositories;
import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
//@EnableRedisRepositories
public class AppConfig {

    //There are two ways of creating driver, one is jedis another is lettuce,
    //lettuce is bit lazy in intialization so it creates beans  lazily
//It is using default host and port
    @Bean
    RedisConnectionFactory jedisConnectionFactory() {
        return new LettuceConnectionFactory();
    }

    @Bean
    public RedisTemplate<String, Object> redisTemplate() {
        RedisTemplate<String, Object> template = new RedisTemplate<>();
        template.setConnectionFactory(jedisConnectionFactory());
        template.setKeySerializer(new StringRedisSerializer());
        template.setHashKeySerializer(new StringRedisSerializer());
        template.setHashKeySerializer(new JdkSerializationRedisSerializer());
        template.setValueSerializer(new JdkSerializationRedisSerializer());
        template.setEnableTransactionSupport(true);
        template.afterPropertiesSet();
        return template;
    }

    //For setting host and port
//    @Bean
//    JedisConnectionFactory jedisConnectionFactory() {
//        JedisConnectionFactory jedisConFactory
//                = new JedisConnectionFactory();
//        jedisConFactory.setHostName("localhost");
//        jedisConFactory.setPort(6379);
//        return jedisConFactory;
//    }

}

Crear una clase de entidad

@RedisHash("student") // this is a set so we can use set command to see data via redis cli
public class Student {

    public enum Gender {
        MALE, FEMALE
    }

    private Long id;
    private String name;
    private int age;
    private String city;

    //getters and setters
}

@Repository
public interface StudnetRepo extends CrudRepository<Student, Long> {

}

package com.redisexample.redisdemo.controller;

import com.redisexample.redisdemo.model.Student;
import com.redisexample.redisdemo.repo.StudnetRepo;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/student")
public class StudentController {

    @Autowired
    private StudnetRepo studnetRepo;

    @PostMapping
    public void saveStudent(@RequestBody Student student){
        studnetRepo.save(student);
    }

    @GetMapping
    public Iterable<Student> getStudent(){
        return studnetRepo.findAll();
    }
}

Entonces, este es un ejemplo simple del uso de Redis como base de datos con una aplicación Spring Boot.

En la próxima publicación, veremos cómo usar Redis como proveedor de caché.

¡¡Gracias por leer!!