记录spring boot+mybatis整合redis cluster踩过的那些坑

        近期想系统的学习下公司所用的框架结构,简单先用spring boot+mybatis打起来一个简单的工程。

使用的redis版本:

[root@localhost src]# ./redis-server -v
Redis server v=5.0.5 sha=00000000:0 malloc=libc bits=64 build=58be8d10ae8a0f31

spring-boot版本:

redis运行在centos7的虚拟机上,ip地址为192.168.31.132

看资料学习了解到mybatis的一级缓存是默认开启的,二级缓存开启需在工程启动类添加如下注解

以单节点redis作为mybatis的二级缓存的配置信息如下:

spring.redis.timeout=5000
#redis数据库索引(默认为0),使用索引为3的数据库,避免冲突
#spring.redis.database=3
#redis服务器地址
#spring.redis.host=192.168.31.132
#redis端口
#spring.redis.port=6379
#redis访问密码(默认为空)
#spring.redis.password=
#redis连接池配置
#最大可用连接数
#spring.redis.jedis.pool.max-active=8
#最大空闲连接数(默认为8,负数表示无限制)
#spring.redis.jedis.pool.max-idle=8
#最小空闲连接数(默认为0,只有正数起作用)
#spring,redis.jedis.min-idle=0
#从连接池中获取最大等待时间(默认为-1,单位为毫秒,负数表示无限制)
#spring.redis.jedis.pool.max-wait=-1

单节点使用比较简单,配置信息写好后,直接可以使用。单点测试完成后,下面是集群方式的使用:

redis集群模式配置参考如下两篇文章:

https://blog.csdn.net/huwh_/article/details/79242625这篇文章介绍的是通过redis-trib构建redis集群

https://www.cnblogs.com/gavanwanggw/p/7161000.html这篇文章介绍的直接通过redis操作命令构建集群

先通过第二篇文章的方式构建集群,操作没问题,通过本地主机192.168.50.231的windows版本的redis客户端,可以正常操作redis服务器。

然后通过程序访问,集群信息配置如下

spring.redis.cluster.max-redirects=3
spring.redis.cluster.nodes=192.168.31.132:7000,192.168.31.132:7001,192.168.31.132:7002

简单的数据库查询实现(mapper文件及相关访问swagger访问页面不在赘述)

通过swager程序访问,后台异常:

too many Cluster redirections?; nested exception is redis.clients.jedis.exceptions.JedisClusterMaxRedirectionsException: Too many Cluster redirections?

通过https://github.com/xetorthio/jedis/issues/943链接提供的回答

配置文件的路径

在nodes-7000.conf中,里面确实是127.0.0.1:7000诸如此类的ip地址加端口号,感觉应该是程序读取了这个配置文件的信息导致的错误。

然后按第一篇文章提供的方式配置集群,在执行如下命令之前一切都很顺利,出现的错误也和这位博主描述的一模一样:

./redis-trib.rb create --replicas 1 192.168.31.132:7000 192.168.31.132:7001 192.168.31.132:7002

返回的提示信息:

当前版本的redis已不再支持通过redis-trib.rb创建集群,应改为如下为方式:

redis-cli --cluster create 192.168.31.132:7000 192.168.31.132:7001 192.168.31.132:7002 --cluster-replicas 1

官方提示还是很温馨的,一遍成功,构建的集群信息如下:

从这里看 集群信息应该是对了

程序配置redis集群信息(参考spring.io的cluster操作):

从程序访问:

第一次查询结果,仍从数据库访问:

第二次的结果

可以看到,是直接从缓存查询的,应用成功。

从配置类获取connectionFactory后测试连通性的结果

测试代码:

测试结果:

连通无误。

此次主要记录了redis集群配置中的一些问题。但对于redisClusterConnection的一些api(本文的set方法),仍存在一些问题,待后续研究。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值