redis槽位
redis集群搭建完后会自动在redis集群中内置16384个哈希槽(至于为啥是16384个,有兴趣的读者可进行深究)。当客户端向redis集群中插入数据时(key-value),redis会先对key使用crc16算法算出一个结果值,然后用此结果值对16384进行求余,此余数会对应到16384中的相应槽位。也就是说,集群中的每个节点都会负责一部分槽位,这一部分槽位便用来存储数据。这里需要注意的是,搭建集群时,槽位并不一定是平均分配的。查看集群中每个节点负责的槽位,可进入任意集群节点后执行cluster nodes
查看,如下所示:
[root@localhost bin]# ./redis-cli -h 127.0.0.1 -p 7002
127.0.0.1:7002>
127.0.0.1:7002>
127.0.0.1:7002> cluster nodes
645d2b118ba3d4d7f0de88c3618885d6ddc5734a 127.0.0.1:7002@17002 myself,master - 0 1575946339000 22 connected 0-5459
058fadf3bccee9d92e15f41f4290cf87c60698fd 127.0.0.1:7005@17005 slave 645d2b118ba3d4d7f0de88c3618885d6ddc5734a 0 1575946341203 22 connected
0a031b3b81c9307ac86b776b00b26110cf6e21b6 127.0.0.1:7006@17006 slave 6ac079fc26f0a558338263dba79afd20379c1fd7 0 1575946340201 23 connected
f17939b8ae0da8901cb3dd3ec425b50975f130d5 127.0.0.1:7001@17001 master - 0 1575946338195 21 connected 10920-16383
664ac1cf4e1dc5a810b3651b97009992d646a10a 127.0.0.1:7004@17004 slave f17939b8ae0da8901cb3dd3ec425b50975f130d5 0 1575946339198