Table des matières
Utilisez Spring Boot pour créer rapidement une solution de cache de session distribuée basée sur Redis
Étape 1 : Configurez un environnement de développement Spring Boot
Étape 2 : Activer l'annotation @EnableRedisHttpSession
Étape 3 : Test
Maison base de données Redis Comment utiliser Spring Boot pour créer rapidement un cache de session distribué basé sur Redis

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

May 27, 2023 pm 08:49 PM
redis session spring boot

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!

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

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Article chaud

Repo: Comment relancer ses coéquipiers
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD
Hello Kitty Island Adventure: Comment obtenir des graines géantes
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
1 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Tags d'article chaud

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Solution à l'erreur 0x80242008 lors de l'installation de Windows 11 10.0.22000.100 Solution à l'erreur 0x80242008 lors de l'installation de Windows 11 10.0.22000.100 May 08, 2024 pm 03:50 PM

Solution à l'erreur 0x80242008 lors de l'installation de Windows 11 10.0.22000.100

Comment changer le mot de passe dans Redis Comment changer le mot de passe dans Redis Apr 20, 2024 am 03:00 AM

Comment changer le mot de passe dans Redis

Analyser les goulots d'étranglement des fonctions PHP et améliorer l'efficacité de l'exécution Analyser les goulots d'étranglement des fonctions PHP et améliorer l'efficacité de l'exécution Apr 23, 2024 pm 03:42 PM

Analyser les goulots d'étranglement des fonctions PHP et améliorer l'efficacité de l'exécution

Redis est-il un cache mémoire ? Redis est-il un cache mémoire ? Apr 20, 2024 am 05:26 AM

Redis est-il un cache mémoire ?

Stratégie de mise en cache et optimisation de l'API Golang Stratégie de mise en cache et optimisation de l'API Golang May 07, 2024 pm 02:12 PM

Stratégie de mise en cache et optimisation de l'API Golang

Redis est-il une base de données non relationnelle ? Redis est-il une base de données non relationnelle ? Apr 20, 2024 am 05:36 AM

Redis est-il une base de données non relationnelle ?

Lequel a les meilleures performances, erlang ou golang ? Lequel a les meilleures performances, erlang ou golang ? Apr 21, 2024 am 03:24 AM

Lequel a les meilleures performances, erlang ou golang ?

Mécanisme de mise en cache et pratique d'application dans le développement PHP Mécanisme de mise en cache et pratique d'application dans le développement PHP May 09, 2024 pm 01:30 PM

Mécanisme de mise en cache et pratique d'application dans le développement PHP

See all articles