Redis avec Spring Boot

Nov 28 2022
Introduction
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.
Photo de Josh Glauser sur Unsplash

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

  1. Redis peut être utilisé comme base de données NoSQL basée sur la valeur clé.
  2. Redis peut être utilisé comme fournisseur de cache.
  3. Redis peut être utilisé comme éditeur et abonné, qui est utilisé dans le traitement des événements.
  4. Redis peut être utilisé comme magasin de session.
  5. 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.

  1. Installez homebrew dans votre système s'il n'y est pas.
  2. Les commandes Exécuter ci-dessous séquentiellement
  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
    

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!!