一、是什么
Redis集群实现了对redis的水平扩容,即启动N个redis节点,将整个数据库分布存储在这N个节点中,每个节点占存储总数的1/N。
二、搭建集群
搭建一个三主三从的redis集群,在一台服务器上模拟。该操作在Reids的主从复制基础上进行。
- 先删除之前的dump文件
- 修改配置文件
- 删除6380、6381配置文件,复制5份6379文件,模拟五台redis。
- 修改配置文件,将端口号改为文件名端口号
- 启动6个redis服务,生成以下6个配置文件
- 将6个节点合成一个集群,我这里使用的是redis6版本,不需要装环境,在redis的src目录下执行命令:
redis-cli --cluster create --cluster-replicas 1 121.43.147.238:6379 121.43.147.238:6380 121.43.147.238:6381 121.43.147.238:6389 121.43.147.238:6390 121.43.147.238:6391
,注意这里的IP要用实际IP,不能写127.0.0.1,还需要注意的是,如果使用的是阿里云服务器,这个ip应该是内网IP,ifconfig -a可以查看
可以看到,6379、6380、6381为主机,输入yes,集群成功 - 测试,成功
三、插槽
在集群成功后,会有一段数据16384 slots covered
代表共有16384个插槽,根据测试结果来看,6379主机使用0-5460插槽,6380使用5461-10922插槽,6381使用10923-16383插槽。在存入数据的时候,集群使用公式来计算键key属于哪个插槽,这样可以平均分为键值对。
-
添加值:在添加的时候会自动计算插槽的值,插入到指定的服务器中
在添加多个值的时候,由于每个值的插槽不在同一台redis中,因此会无法添加,但是可以通过{}来定义组的概念,从而是key中{}内相同的内容放到一个插槽中。
-
常用命令
cluster keyslot key
计算键的插槽
cluster countkeysinslot num
计算插槽中键的数量,注意:只能计算自己所拥有的插槽中的数量。