wap建站系统开源,建设彩票网站制作,电子商务网站建设期末试题及答案,千牛Redis实现共享Session
分布式系统中#xff0c;sessiong共享有很多的解决方案#xff0c;其中托管到缓存中应该是最常用的方案之一。
1、引入依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM…Redis实现共享Session
分布式系统中sessiong共享有很多的解决方案其中托管到缓存中应该是最常用的方案之一。
1、引入依赖
?xml version1.0 encodingUTF-8?
project xmlnshttp://maven.apache.org/POM/4.0.0 xmlns:xsihttp://www.w3.org/2001/XMLSchema-instancexsi:schemaLocationhttp://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsdmodelVersion4.0.0/modelVersionparentgroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-parent/artifactIdversion2.5.6/versionrelativePath//parentgroupIdcom.example/groupIdartifactIdspring-boot-redis-session/artifactIdversion0.0.1-SNAPSHOT/versionnamespring-boot-redis-session/namedescriptionspring-boot-redis-session/descriptionpropertiesjava.version1.8/java.version/propertiesdependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scope/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependencydependencygroupIdorg.springframework.session/groupIdartifactIdspring-session-data-redis/artifactId/dependencydependencygroupIdorg.springframework.session/groupIdartifactIdspring-session/artifactId/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-web/artifactId/dependency/dependenciesbuildpluginsplugingroupIdorg.springframework.boot/groupIdartifactIdspring-boot-maven-plugin/artifactId/plugin/plugins/build/project2、配置文件
# Redis数据库索引默认为0
spring.redis.database0
# Redis服务器地址
spring.redis.host127.0.0.1
# Redis服务器连接端口
spring.redis.port6379
# Redis服务器连接密码默认为空
spring.redis.password
# 连接池最大连接数使用负值表示没有限制
spring.redis.jedis.pool.max-active10
# 连接池最大阻塞等待时间使用负值表示没有限制
spring.redis.jedis.pool.max-wait-1ms
# 连接池中的最大空闲连接
spring.redis.jedis.pool.max-idle10
# 连接池中的最小空闲连接
spring.redis.jedis.pool.min-idle0
# 连接超时时间毫秒
spring.redis.timeout1000ms3、Session配置
package com.example.springbootredissession.config;import org.springframework.context.annotation.Configuration;
import org.springframework.session.data.redis.config.annotation.web.http.EnableRedisHttpSession;/*** author zhangshixing* date 2021年11月06日 21:14*/
Configuration
EnableRedisHttpSession(maxInactiveIntervalInSeconds 86400 * 30)
public class SessionConfig {}maxInactiveIntervalInSeconds: 设置Session失效时间使用Redis Session之后原Boot的
server.session.timeout属性不再生效。
4、控制器
package com.example.springbootredissession.controller;import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;import javax.servlet.http.HttpSession;
import java.util.UUID;/*** author zhangshixing* date 2021年11月06日 21:15*/
RestController
public class SessionController {RequestMapping(value uid,method RequestMethod.GET)public String uid(HttpSession session) {UUID uid (UUID) session.getAttribute( uid );if (uid null ) {uid UUID.randomUUID();}session.setAttribute( uid , uid);return session.getId();}
}5、启动类
package com.example.springbootredissession;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;SpringBootApplication
public class SpringBootRedisSessionApplication {public static void main(String[] args) {SpringApplication.run(SpringBootRedisSessionApplication.class, args);}}6、测试
访问http://localhost:8080/uid
登录redis 输入 keys *session*
127.0.0.1:6379 keys *session*
1) spring:session:sessions:96062709-c987-46d4-88e3-3c952eccbf50
2) spring:session:sessions:expires:96062709-c987-46d4-88e3-3c952eccbf50
3) spring:session:expirations:1659325500000其中1659325500000为失效时间意思是这个时间后session失效。
96062709-c987-46d4-88e3-3c952eccbf50为sessionId。
登录http://localhost:8080/uid 发现会一致就说明session 已经在redis里面进行有效的管理了。
如何在两台或者多台中共享session其实就是按照上面的步骤在另一个项目中再次配置一次启动后自动就
进行了session共享。