Cet article vous présente la méthode d'intégration de Spring Session avec Spring Boot pour réaliser le partage de session. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Récemment, Spring Boot a été utilisé pour développer un système. Nginx effectue l'équilibrage de charge et distribue les requêtes à plusieurs Tomcats. À ce stade, la page consultée distribuera la requête à différents serveurs. Si la première visite est distribuée sur le serveur A, la session sera stockée sur le serveur A et l'équilibrage de charge sera distribué sur le serveur B lors d'un nouvel accès. Les informations de session consultées pour la première fois ne pourront pas être obtenues. informations de session précédentes, le partage de session doit donc être implémenté. Heureusement, il existe une session Spring qui peut réaliser le partage de session en utilisant une configuration simple :
<!-- Spring Boot Redis 依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-data-redis</artifactId> </dependency> <dependency> <groupId>org.springframework.session</groupId> <artifactId>spring-session-core</artifactId> </dependency>
Dans le répertoire du projet, créez un fichier java (nommez-le comme vous le souhaitez). Mon nom ici est RedisSessionConfig.java
@. EnableRedisHttpSession. Cette annotation est très importante. Après l'avoir ajoutée, spring sera utilisé pour implémenter les opérations de partage de session, et le Bean configuré permet à Spring de se connecter à Redis selon la configuration dans le fichier de configuration.
SpringSession Il convient de noter que redis nécessite la version 2.8 ou supérieure, puis activez la notification d'événement. Ajoutez
notify-keyspace-events Ex // 打开此配置,其中Ex表示键事件通知里面的key过期事件,每当有过期键被删除时,会发送通知
au fichier de configuration redis ou utilisez la commande suivante pour activer la notification d'événement :
redis-cli config set notify-keyspace-events Egx
Si votre Redis n'est pas maintenu par vous-même, par exemple, vous utilisez la base de données Redis d'Alibaba Cloud (c'est mon cas), et vous ne pouvez pas modifier sa configuration, alors vous pouvez utiliser la configuration Java suivante fichier C'est tout.
package org.spring.springboot.config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.session.data.redis.config.ConfigureRedisAction; import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession; @Configuration // maxInactiveIntervalInSeconds 默认是1800秒过期,这里测试修改为60秒 @EnableRedisHttpSession(maxInactiveIntervalInSeconds = 1800) public class RedisSessionConfig { @Bean public static ConfigureRedisAction configureRedisAction() { return ConfigureRedisAction.NO_OP; } }
Spring Boot créera automatiquement une RedisConnectionFactory pour connecter la session Spring au serveur Redis sur localhost sur le port 6379 (port par défaut). Dans un environnement de production, vous devez vous assurer de mettre à jour la configuration pour pointer vers le serveur Redis
src/main/resources/application.properties
# Redis 配置 # Redis数据库索引(默认为0) spring.redis.database=0 # Redis服务器地址 spring.redis.host=192.168.0.1 # Redis服务器连接端口 spring.redis.port=6379 # Redis服务器连接密码(默认为空) spring.redis.password=1234
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!