Redis con bota de resorte
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
- Redis se puede utilizar como una base de datos NoSQL basada en valores clave.
- Redis se puede utilizar como proveedor de caché.
- Redis se puede usar como editor y suscriptor, que se usa en el procesamiento de eventos.
- Redis se puede utilizar como un almacén de sesión.
- 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.
- Instale homebrew en su sistema si no está allí.
- Los comandos Ejecutar a continuación secuencialmente
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!!