redis集群搭建注意事项
官方教程:https://redis.io/docs/management/scaling/
其他参考:
https://www.cnblogs.com/paul8339/p/17285558.html#_label3
https://www.cnblogs.com/aquester/p/9891481.html
https://blog.csdn.net/u013411339/article/details/107502718
- 集群最低要求:6台redis,实现3主3从。
每台redis需要修改配置项:
# 启用集群功能
cluster-enabled yes
# 本台redis的集群配置信息保存文件名:
cluster-config-file nodes_xxxx.conf
redis-cli --cluster create 127.0.0.1:6379 127.0.0.1:6380 \
127.0.0.1:6381 127.0.0.1:6382 127.0.0.1:6383 127.0.0.1:6384 \
--cluster-replicas 1
redis-cli --cluster create 192.168.2.6:7000 192.168.2.6:7001 192.168.2.6:7002
--cluster-replicas 0
集群限制
由于Redis集群中数据分布在不同的节点上,因此有些功能会受限:
db库:单机的Redis默认有16个db数据库,但在集群模式下只有一个db0;
复制结构:上面的复制结构有树状结构,但在集群模式下只允许单层复制结构;
事务/lua脚本:仅允许操作的key在同一个节点上才可以在集群下使用事务或lua脚本;(使用Hash Tag可以解决)
key的批量操作:如mget,mset操作,只有当操作的key都在同一个节点上才可以执行;(使用Hash Tag可以解决)
keys/flushall:只会在该节点之上进行操作,不会对集群的其他节点进行操作;
Hash Tag:
上面介绍集群限制的时候,由于key被分布在不同的节点之上,因此无法跨节点做事务或lua脚本操作,但我们可以使用hash tag方式解决。
hash tag:当key包含{}的时候,不会对整个key做hash,只会对{}包含的部分做hash然后分配槽slot;因此我们可以让不同的key在同一个槽内,这样就可以解决key的批量操作和事务及lua脚本的限制了;
但由于hash tag会将不同的key分配在相同的slot中,如果使用不当,会造成数据分布不均的情况,需要注意。
本文来自博客园,作者:蕝戀,转载请注明原文链接:https://www.cnblogs.com/juelian/p/17742109.html