


Comment utiliser Spring Boot pour créer rapidement un cache de session distribué basé sur Redis
May 27, 2023 pm 08:49 PMUtilisez 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 :
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é.
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>
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 ######
Étape 2 : Activer l'annotation @EnableRedisHttpSession
@Configuration @EnableRedisHttpSession(redisNamespace = "mysession",maxInactiveIntervalInSeconds = 60*60*24) public class SessionConfig
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
É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
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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

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

Sujets chauds

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

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

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

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

Lequel a les meilleures performances, erlang ou golang ?

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