redis集群搭建注意事项

官方教程:https://redis.io/docs/management/scaling/

其他参考:

https://note.youdao.com/ynoteshare/index.html?id=174eaa7104ce961f8012d521d8155bd9&type=note&_time=1640409730693?auto

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中,如果使用不当,会造成数据分布不均的情况,需要注意。

posted @ 2023-10-04 12:14  蕝戀  阅读(44)  评论(0编辑  收藏  举报