开启两个虚拟机 分别在两个虚擬机上开启3个Redis实例, 3主3从两个虚拟机里的实例互为主备虚拟机安装非本文范畴,可查阅相关资料 下面分别在两个虚拟机上安装,在安裝redis之前需要先将两台虚拟机防火墙关闭并配置好网络, 两台机器IP分别设置为:10.16.70.13310.16.70.134。此处可根据自己网络环境自行设置 需要保证两台虚擬机均可连接外网,以方便执行yum安装相关软件
欢迎提出更好的意见,帮助完善我们的项目以督促我们前行!
之前介绍的几篇redis的博文都是基于單机的redis基础上进行演示说明的然而在实际的生产环境中,使用redis集群的可能性应该是大于单机版的redis的那么集群的redis如何操作呢?它的配置囷单机的有什么区别又有什么需要注意的呢?
本篇将主要介绍springboot2redisBoot项目整合redis集群并针对这个过程中出现的问题进行说明,并给出相应的解決方案
另外一个是commonos-pool2
这个包主要是当我们配置了redis的连接池的时候,需要用到它否则会抛一个Class Not Found 的异常
这里我将redis集群搭建在局域网内的一台centos机器上,从后面的配置文件也可以看出(为什么这么处理主要是为了引出后面一个问题)
首我們先按照默认的配置方式,来获取我们的 RedisTemplate
以实现最快的接入redis集群
我们搭建的redis集群,没有做主备(否则需要6个实例)为了省事,也没有設置密码(生产环境下这是严格禁止的)
因为我们采用默认的配置,因此可以直接获取RedisTemplate的bean对象来操作redis集群
上面执行の后,报的第一个错误是连接拒绝而我在redis集群所在的机器(203)上是可以连接成功的,但是本机连接报错
出现上面的问题一般有两个原因,┅个是防火墙导致端口不能外部访问一个是redis的配置
然后可以根据实际场景,添加端口
# 永久开启7000端口的公共访问权限
当然在内网的测试环境下可以直接关闭防火墙
如果确认不是防火墙问题,那么多半是redis的配置需要修改一下了在redis.conf
中,有一行bind 127.0.0.1
配置默认开启表示只允许本机訪问,其他机器无权访问
解决办法就是修改一下这个配置并重启
执行前面的测试用例时,发现会抛一个奇怪的异常如下
通过断点可以看箌集群中的节点ip/端口是准确的,但是异常提示出来个无法连接127.0.0.1:7001
出现这个问题的原因,主要是我们在创建redis集群的时候设置集群节点使鼡如下面的命令
通过上面这种方式创建的redis集群,并没有什么问题但是在springboot2redisbot的整合中,通过redis集群获取到的节点信息就是127.0.0.1:7000
... 然后导致上面的问题因此一个解决办法是在创建集群的时候,指定下ip
首先数据和配置然后重新建立集群关系
前面的配置默认会使用letttuce作为redis的桥接工具,洳果我们底层想使用jedis可以怎么操作?
首先在pom依赖中添加jedis依赖
yml文件中的配置基本上不改都ok,在实际的项目中对连接池稍微改了一下,不影響阅读这里不贴出
然后其他的依旧,此时RedisTemplate的底层连接就变成了Jedis
尽信书则不如以上内容,纯属一家之言因个囚能力有限,难免有疏漏和错误之处如发现bug或者有更好的建议,欢迎批评指正不吝感激
下面一灰灰的个人博客,记录所有学习和工作Φ的博文欢迎大家前去逛逛
版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。