Maison > base de données > Redis > le corps du texte

Comment utiliser Spring Boot pour créer rapidement un cache de session distribué basé sur Redis

WBOY
Libérer: 2023-05-27 20:49:27
avant
940 Les gens l'ont consulté

Utilisez Spring Boot pour créer rapidement une solution de cache de session distribuée basée sur Redis

Dans les applications Web à grande échelle, la gestion des sessions est très importante, qui ne peut pas être satisfaite par le stockage sur une seule machine.

Il existe généralement les méthodes suivantes :

  1. Persistance des sessions dans la base de données. Mais l'inconvénient est que le coût de lecture et d'écriture est trop élevé.

  2. Dé-session, comme le stockage des informations dans les cookies. Mais l'inconvénient est que la taille est limitée et. dangereux.

3. Stockez la session dans une base de données nosql distribuée, telle que Redis.

Étape 1 : Configurez un environnement de développement Spring Boot

Ajoutez la dépendance principale maven spring-session-data-redis

<!--基于redis的分布式session存储-->
        <dependency>
            <groupId>org.springframework.session</groupId>
            <artifactId>spring-session-data-redis</artifactId>
        </dependency>
Copier après la connexion

Configurez les propriétés de connexion Redis dans le fichier application.properties

######   Redis config start ######
spring.redis.database=0
spring.redis.host=192.168.41.60
spring.redis.port=6379
spring.redis.password=
spring.redis.pool.max-active=20
spring.redis.pool.max-wait=-1
spring.redis.pool.max-idle=8
spring.redis.pool.min-idle=0
spring.redis.timeout=0
######   Redis config end ######
Copier après la connexion

Étape 2 : Activer l'annotation @EnableRedisHttpSession

@Configuration
@EnableRedisHttpSession(redisNamespace = "mysession",maxInactiveIntervalInSeconds = 60*60*24)
public class SessionConfig
Copier après la connexion

Le code source de l'annotation @EnableRedisHttpSession est le suivant. Vous pouvez voir que trois paramètres peuvent être configurés :

  • .

    maxInactiveIntervalInSeconds : délai d'expiration des données en session (pas de session dans Redis) Délai d'expiration)

  • Dans ma configuration, j'ai spécifié un espace de noms nommé "mysession" pour identifier l'application actuelle

  • redisFlushMode : la façon dont Redis enregistre le session, le ON_SAVE
    par défaut en a deux. One way : IMMEDIATE : Enregistrez immédiatement une fois la session créée. ON_SAVE : Il ne sera pas enregistré lors de la création de la session, mais il sera enregistré lors de l'ajout de données à la session

    .
@Retention(java.lang.annotation.RetentionPolicy.RUNTIME)
@Target({ java.lang.annotation.ElementType.TYPE })
@Documented
@Import(RedisHttpSessionConfiguration.class)
@Configuration
public @interface EnableRedisHttpSession
    int maxInactiveIntervalInSeconds() default 1800;

    String redisNamespace() default "";

    RedisFlushMode redisFlushMode() default
Copier après la connexion

Étape 3 : Test

Ecrire un contrôleur

@RestController
public class HelloController

    @RequestMapping("/hello/{username}")
    public String hello(HttpSession session, @PathVariable(value = "username") String username) {
        session.setAttribute("username", username);
        return "保存session到Redis成功";
    }

    @RequestMapping("/getName")
    public String getUsername(HttpSession session) {
        String username = (String) session.getAttribute("username");
        return
Copier après la connexion

Lorsque le navigateur accède au lien http://localhost:8080/hello/admin, la méthode

hello recevra les paramètres passés par le navigateur et les enregistrera dans la session, puis enregistrez la session Enregistrer dans Redis

En affichant les informations dans Redis, vous pouvez voir les informations suivantes :

Le spring:session est automatiquement ajouté et l'espace de noms mysession que nous avons créé se trouve sous ce répertoire par défaut

Ensuite, nous visitons http://localhost:8080/getName, vous pouvez voir que le navigateur affichera l'administrateur que nous venons d'enregistrer dans la session

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal