基于redis 的tomcat session 同步

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
云原生内存数据库 Tair,内存型 2GB
云数据库 Redis 版,经济版 1GB 1个月
简介: 这里我把Redis放在/XX/下,所以在该目录下执行下列命令: $ wget http://download.redis.io/releases/redis-3.2.1.tar.gz$ tar xzf redis-3.2.1.tar.gz$ cd redis-3.2.1$ make

这里我把Redis放在/XX/下,所以在该目录下执行下列命令:



$ wget http://download.redis.io/releases/redis-3.2.1.tar.gz


$ tar xzf redis-3.2.1.tar.gz


$ cd redis-3.2.1


$ make



启动


[root@localhost redis-3.2.1]# ./src/redis-server ../redis.conf



启动报错



解决方法


将redis配置文件拷贝到/etc/redis/${REDISPORT}.conf



# mkdir /etc/redis




# cp /sxcoo/redis-2.8.21/redis.conf  /etc/redis/6379.conf





启动


[root@localhost redis-3.2.1]# ./src/redis-server  /etc/6379.conf





在我window环境 原创链接测试


可以正常链接


但是存值出错






经查阅资料


在redis3.2之后,redis增加了protected-mode,在这个模式下,即使注释掉了bind 127.0.0.1,再访问redisd时候还是报错。



解决方法 修改redis.conf


protected-mode no





以上redis已经装好了,


现在要做的是将tomcat的session 用redis来管理




详细配置地址:https://github.com/izerui/tomcat-redis-session-manager


本来很简单


1、在tomcat/lib下面添加


commons-pool2-2.2.jar


jedis-2.5.2.jar


tomcat-redis-session-manager-2.0.0.jar


2、修改conf/context.xml,添加


<Valve className="com.orangefunction.tomcat.redissessions.RedisSessionHandlerValve" />


   <Manager className="com.orangefunction.tomcat.redissessions.RedisSessionManager"


    host="localhost"


    port="6379"


    database="10"


    maxInactiveInterval="60"/>


3、启动tomcat。。但是就是不行



一脸懵逼


查看日志没有发现redis相关的异常



最后仔细阅读启动tomcat服务的日志发现了一个


No rules found matching 'Context/Value'.


这个异常是context配置文件的问题。



阅读下载的tomcat-redis-session-manager源码发现源码(tomcat-redis-session-manager)依赖了tomcat其他的包:tomcat-juli.jar而tomcat默认是没有这些包的,从下载tomcat-juli-adapters.jar和tomcat-juli.jar两个包,放在apache-tomcat-7.0.57\lib目录下,同时将tomcat-juli.jar放在apache-tomcat-7.0.57\bin目录下同时将编译tomcat-redis-session-manager的源码,通过相应的依赖包common-pool2.2,jedis以及tomcat-juli.jar编译,


并打成自己的jar包,上传然后将这个依赖包放在apache-tomcat-7.0.57\lib目录下,删除网上下载的tomcat-redis-session-manager-1.2-tomcat-7.jar.



经测试 成功




接下来测试tomcat集群负载均衡和session共享



经测试 成功


接下来测试tomcat集群负载均衡和session共享

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
2月前
|
存储 NoSQL Redis
08- 什么是 Redis 主从同步?
Redis主从同步是种数据备份机制,Slave从Master获取全量数据,之后持续接收增量更新。全量复制阶段包括Slave请求同步、Master拒绝增量并发送RDB到Slave、Slave加载RDB。增量复制阶段,Master使用repl_backlog存储命令并发送给Slave,Slave执行这些命令以保持与Master同步。该机制确保主从数据一致性,支持多个Slave和一个Master。
48 0
|
2月前
|
NoSQL Redis 数据库
数据传输DTS中金融云跨账号同步Redis,增量校验报错了
【1月更文挑战第16天】【1月更文挑战第80篇】数据传输DTS中金融云跨账号同步Redis,增量校验报错了
80 1
|
2月前
|
存储 NoSQL 网络协议
redis主从同步对象模型学习笔记
redis主从同步对象模型学习笔记
58 0
|
17天前
|
缓存 负载均衡 NoSQL
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
Redis系列学习文章分享---第十四篇(Redis多级缓存--封装Http请求+向tomcat发送http请求+根据商品id对tomcat集群负载均衡)
34 1
|
10天前
|
安全 NoSQL Java
网络安全-----Redis12的Java客户端----客户端对比12,Jedis介绍,使用简单安全性不足,lettuce(官方默认)是基于Netty,支持同步,异步和响应式,并且线程是安全的,支持R
网络安全-----Redis12的Java客户端----客户端对比12,Jedis介绍,使用简单安全性不足,lettuce(官方默认)是基于Netty,支持同步,异步和响应式,并且线程是安全的,支持R
|
17天前
|
存储 NoSQL Java
Redis系列学习文章分享---第三篇(Redis快速入门之Java客户端--短信登录+session+验证码+拦截器+登录刷新)
Redis系列学习文章分享---第三篇(Redis快速入门之Java客户端--短信登录+session+验证码+拦截器+登录刷新)
25 0
|
2月前
|
存储 缓存 NoSQL
Redis与数据库同步指南:订阅Binlog实现数据一致性
本文由开发者小米分享,探讨分布式系统中的一致性问题,尤其是数据库和Redis一致性。文章介绍了全量缓存策略的优势,如高效读取和稳定性,但也指出其一致性挑战。为解决此问题,提出了通过订阅数据库的Binlog实现数据同步的方法,详细解释了工作原理和步骤,并分析了优缺点。此外,还提到了异步校准方案作为补充,以进一步保证数据一致性。最后,提醒在实际线上环境中需注意日志记录、逐步优化和监控报警。
83 3
|
1月前
|
消息中间件 NoSQL Linux
详解Redis的主从同步原理
只不过在主节点中叫做master_repl_offset; 从节点也有一个偏移量叫做slave_repl_offset,用来记录从节点已经从主节点的repl_backlog_buffer中同步到的最新写指令的位置;
214 0
|
2月前
|
缓存 NoSQL Java
【亮剑】分布式锁是保证多服务实例同步的关键机制,常用于互斥访问共享资源、控制访问顺序和系统保护,如何使用注解来实现 Redis 分布式锁的功能?
【4月更文挑战第30天】分布式锁是保证多服务实例同步的关键机制,常用于互斥访问共享资源、控制访问顺序和系统保护。基于 Redis 的分布式锁利用 SETNX 或 SET 命令实现,并考虑自动过期、可重入及原子性以确保可靠性。在 Java Spring Boot 中,可通过 `@EnableCaching`、`@Cacheable` 和 `@CacheEvict` 注解轻松实现 Redis 分布式锁功能。
|
2月前
|
NoSQL 关系型数据库 MySQL
Redis入门到通关之Redis实现Session共享
Redis入门到通关之Redis实现Session共享
35 0