spring boot使用redis解决session双机问题

session双机问题在分布式系统中经常会遇到,也有挺多解决方案,列举几种:

1. 使用缓存(如redis)来解决

① 可以自己重写session管理类,自己对session进行管理,这可能会比较麻烦一点,因为要考虑session续期问题,考虑不周全可能会有一些问题

② 如果你使用spring boot,那么你有福了,spring boot有现成的解决方案,O(∩_∩)O~

2.session同步,这个不是本文重点就不说了

本文主要介绍一下spring boot 使用redis解决session双机问题的实现,非常简单。

1. 环境

基于spring boot的项目

2.配置实现 

2.1 首先肯定要添加依赖,要引入spring boot  redis的包


	org.springframework.boot
	spring-boot-starter-data-redis

2.2 配置application文件

# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址
spring.redis.host=***************
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=
# 连接池中的最大空闲连接,默认值也是8。
spring.redis.pool.max-idle=500
#连接池中的最小空闲连接,默认值也是0。
spring.redis.pool.min-idle=50
# 如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
spring.redis.pool.max-active=2000
# 等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException
spring.redis.pool.max-wait=1000
# 连接超时时间(毫秒)
spring.redis.timeout=0

2.4 写个redis session管理类

@Configuration
//启用spring boot redis session,并设置session过期时间为两小时
@EnableRedisHttpSession(maxInactiveIntervalInSeconds= 7200,redisNamespace = "tl")
public class RedisSessionConfig {

}

使用注解即可: 可以在开启session的同时设置session过期时间,单位为秒

@EnableRedisHttpSession(maxInactiveIntervalInSeconds= 7200,redisNamespace = "tl")

2.3 session使用

使用方式跟正常使用没有任何区别

request.getSession().setAttribute("user", user);

 

over, 配置很简单吧,而且也不用考虑session的续期问题。

 

你可能感兴趣的:(redis,问题踩坑)