有一个地方需要注意,由于shiro-redis使用到了 ThreadLocal,在高并发场景下有可能会造成内存溢出,解决办法是禁用ThreadLocal,shiro-redis版本升级至 3.2.3
org.crazycake shiro-redis 3.2.3shiroConfig 添加 sessionDAO.setSessionInMemoryEnabled(false); 禁用ThreadLocal就可以了
@Bean
public RedisSessionDAO sessionDAO(){
RedisSessionDAO sessionDAO = new RedisSessionDAO(); // crazycake 实现
sessionDAO.setSessionInMemoryEnabled(false);
sessionDAO.setRedisManager(redisManager());
sessionDAO.setSessionIdGenerator(sessionIdGenerator()); // Session ID 生成器
return sessionDAO;
}