pom.xml文件中引入redis的依赖
在application.xml配置redis:
class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
lazy-init="false">
其中,注意到redisTemplate的序列化属性的配置。
3. shiro配置文件中加入:
4. 创建SessionDao类继承EnterpriseCacheSessionDAO:
@Repository("sessionDao")
public class SessionDao extends EnterpriseCacheSessionDAO {
@Resource(name = "redisTemplate")
private RedisTemplate redisTemplate;
@Override
protected Serializable doCreate(Session session) {
Serializable sessionId = super.doCreate(session);
redisTemplate.boundValueOps("shiro_session_" + sessionId.toString()).set(session, 30, TimeUnit.MINUTES);
return sessionId;
}
@Override
protected Session doReadSession(Serializable sessionId) {
Session session = super.doReadSession(sessionId);
if (session == null) {
session = (Session) redisTemplate.boundValueOps("shiro_session_" + sessionId.toString()).get();
}
return session;
}
@Override
protected void doUpdate(Session session) {
super.doUpdate(session);
redisTemplate.boundValueOps("shiro_session_" + session.getId()).set(session, 30, TimeUnit.MINUTES);
}
@Override
protected void doDelete(Session session) {
redisTemplate.delete("shiro_session_" + session.getId().toString());
super.doDelete(session);
}
}
redisTemplate中boundValueOps为对key的绑定简化的api,可以通过bound封装指定的key,然后进行一系列的操作而无须“显式”的再次指定Key。
5. 4.在本机上同时运行两个相同项目(端口号不同)测试,开启redis服务,登录其中一个项目成功后,redis客户端显示
再登录另一个项目,发现无需登录,redis客户端只存储一个session。
集群中Session共享解决方案分析
一.为什么要Session共享 Session存储在服务器的内存中,比如Java中,Session存放在JVM的中,Session也可以持久化到file,MySQL,redis等,SessionID存 ...
Apache shiro集群实现 (八) web集群时session同步的3种方法
Apache shiro集群实现 (一) shiro入门介绍 Apache shiro集群实现 (二) shiro 的INI配置 Apache shiro集群实现 (三)shiro身份认证(Shiro ...
redis/分布式文件存储系统/数据库 存储session,解决负载均衡集群中session不一致问题
先来说下session和cookie的异同 session和cookie不仅仅是一个存放在服务器端,一个存放在客户端那么笼统 session虽然存放在服务器端,但是也需要和客户端相互匹配,试想一个浏览 ...
关于 tomcat 集群中 session 共享的三种方法
前两种均需要使用 memcached 或redis 存储 session ,最后一种使用 terracotta 服务器共享. 建议使用 redis,不仅仅因为它可以将缓存的内容持久化,还因为它支持的单 ...
通过memcached来实现对tomcat集群中Session的共享策略
近期在做一套集群的实现,实现的方案是在Linux下完成对Apache + Tomcat 负载均衡的功能. 上述功能已经实现,有需要了解的朋友可以看我另外一篇博文. Linux下Apache与Tomca ...
redis之(十五)redis的集群中的哨兵角色
一:redis集群的哨兵的目的是什么?. (1)监控主redis和从redis数据库是否正常运行 (2)主redis出现故障,自动将其中一台从redis升级为主redis.将原先的主redis转变成从 ...
redis cluster集群中键的分布算法
Redis Cluster Redis Cluster是Redis的作者 Antirez 提供的 Redis 集群方案 —— 官方多机部署方案,每组Redis Cluster是由多个Redis实例组成 ...
集群服务器Session同步
事实上,网站总是有状态的.每一个登录信息.用户信息常常被存储在session内部.而当一个网站被部署在不止一台服务器的时候,就会遇到session同步的问题.事实上即使一个很小的网站,也要至少有两台服 ...
【转】web集群时session同步的3种方法
转载请注明作者:海底苍鹰地址:http://blog.51yip.com/server/922.html 在做了web集群后,你肯定会首先考虑session同步问题,因为通过负载均衡后,同一个IP访问 ...
随机推荐
js实现复选框全选
HTML代码如下:
02快速学习ExtJs之---第一个HelloWord!
这篇主要讲部署下ExtJS开发环境,以及搭建项目.我们使用ExtJs官方提供的Sencha Cmd来搭建 1.搭建项目 1.下载官方的Sencha Cmd工具,安装. 2..Window用户进入到命令 ...
lisp 题目
1.根据二叉树的中序,前序生成生成二叉树的后续 2.BFPRT算法
C#如何释放已经加载的图片 (转)
使用Image.FromFile取磁盘上的图片时,这个方法会锁定图片文件,而且会导致内存占用增大, 有几种方法解决: 一:将Image类转换成Bitmap类 System.Drawing.Image ...
3 Sum Closest 解答
Question Given an array S of n integers, find three integers in S such that the sum is closest to a ...
C#根据汉字生成拼音首字母全称
static void Main(string[] args) { string s = GetChineseSpell("周杰伦"); Console.WriteLine(s.T ...
初识C语言(二)
C语言标识符的命名规则 变量或者函数起的名字就是标识符,而且C语言的标识符有它自己的命名规则: 标识符的长度最好不要超过8位,因为在一些版本的C语言中标示符的前八位是有效的,所以当两个标识符的前八位相 ...
解决问题:CA_ERROR证书出错,请登录微信支付商户平台下载证书-企业付款到零钱接口(原创)
这几天用到了微信企业付款到零钱这个接口,结果出现了报错:CA_ERROR, 该接口的API说明和报错提示说明:https://pay.weixin.qq.com/wiki/doc/api/tools/ ...
【blog】SpringBoot如何搭建聚合项目
以我的博客为例 blog --blog-common --blog-entity --blog-repo --blog-service --blog-web SpringBoot聚合项目推荐 http ...