记录搭建redis集群以及使用过程中踩过的坑

集群搭建过程我参考的链接: https://w.cnblogs.com/nijunyang/p/12508098.html

1、几个报无权限操作的解决办法

chmod 777 /usr/local/redis-cluster
chmod 777 /usr/local/redis-server
chmod 777 /usr/local/redis-5.0.2/src/redis-cli

2、加入节点超时,一直 Waiting for the cluster to join

redis集群不仅需要开通redis客户端连接的端口,而且需要开通集群总线端口,集群总线端口为redis客户端连接的端口 + 10000,如redis端口为6379,则集群总线端口为16379

iptables 添加开放端口,

vi /etc/sysconfig/iptables 

重启配置

systemctl restart iptables.service

3、启动集群失败,报错:Node 192.168.116.133:6379 is not empty............

解决办法参考:https://blog.csdn.net/qq_38151401/article/details/86741950

清理文件后需要重启所有节点实例

重点,重点,重点,使用过程中遇到的问题

4、java代码连接集群,批量操作,mset,mget

redis分片集群不支持跨分区操作,意思是说3个master集群,key1存在m1上,key2存在m2上,key3存在m3上,

redis命令行执行 mget key1,key2,key3 执行失败,会报keys have defferent slots,不能跨分片查询

spring项目引用redis.clients.jedis,也会报错,查看源码

springboot项目org.springframework.data.redis包,居然可以查到数据,没有异常,查看源码,他会先计算一下keys是不是在同一个分片,同一个分片就直接mget,

不在同一个分片他会创建一个map,key存节点信息,value存分布在这个节点上的key,然后使用并行io去执行,效率取决于最慢的一次请求

 

原文地址:https://www.cnblogs.com/ghw0501/p/14447852.html