Redis avec Spring Boot
Dans cet article, nous allons discuter de Redis , Redis est une base de données NoSQL basée sur des valeurs clés qui peut être utilisée à des fins multiples. C'est open source et c'est un magasin de structure de données InMemory. Parce que Redis prend en charge toutes les structures de données de base comme la liste, l'ensemble, la carte et l'ensemble trié.
En utilisant Redis, nous pouvons développer différents types d'applications telles que des applications de chat, des applications de stockage de session, des tableaux de bord de jeu, etc.
Si vous voulez apprendre Redis, comprenez d'abord les différentes structures de données prises en charge par Redis, à part les commandes à l'aide desquelles nous pouvons stocker et obtenir des données de Redis.
Quelques commandes importantes
Redis prend en charge String, Set, Sorted Set, List et HashMap comme clé — valeurs. Vous trouverez ci-dessous quelques commandes de base pour comprendre les différentes structures de données.
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
Cas d'utilisation de Redis
- Redis peut être utilisé comme base de données NoSQL basée sur la valeur clé.
- Redis peut être utilisé comme fournisseur de cache.
- Redis peut être utilisé comme éditeur et abonné, qui est utilisé dans le traitement des événements.
- Redis peut être utilisé comme magasin de session.
- Redis peut être utilisé dans les applications de chat.
Donc, si vous êtes intéressé après avoir lu ceci et que vous souhaitez maintenant vous entraîner sur Redis, configurez le serveur Redis dans votre système.
- Installez homebrew dans votre système s'il n'y est pas.
- Les commandes Exécuter ci-dessous séquentiellement
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
Donc, après cela, si vous souhaitez utiliser Redis à partir d'un autre système, vous avez besoin d'un client qui interagira avec le serveur Redis.
Maintenant, dans cette partie, nous verrons comment utiliser Redis avec Spring Boot et l'utiliser comme base de données NoSQL.
Installer
La première étape consiste à créer un exemple de projet de démarrage Spring à partir de l'initialiseur Spring et à ajouter la dépendance spring-boot-starter-data-redis .
Maintenant, après avoir importé le projet dans votre IDE préféré, créez des packages et des classes.
La première classe sera pour la configuration, nous avons deux pilotes pour Redis, l'un est Jedis, l'autre est la laitue (il est initialisé paresseusement, et en termes de performances, c'est aussi mieux.)
Outre le pilote, nous avons besoin d'un modèle pour effectuer des opérations sur le serveur Redis, de la même manière que nous avons RestTemplate pour effectuer des opérations de repos.
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;
// }
}
Créer une classe Entité
@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();
}
}
Il s'agit donc d'un exemple simple d'utilisation de Redis en tant que base de données avec une application de démarrage à ressort.
Dans le prochain article, nous verrons comment utiliser Redis comme fournisseur de cache.
Merci d'avoir lu!!