redis切片集群

redis 专栏收录该内容
5 篇文章 0 订阅

redis切片集群(分片集群)

当redis存储数据量过大的时候,在持久化时fork子进程的时间就会增多,导致redis性能差,所以当数据量大的时候采用切片集群
切片集群:指启动多个redis实例组成一个集群,然后按照一定规则,将数据划分成多份,每份用一个实例保存
保存规则:在切片集群方案中,共有16384个哈希槽(0-16383),首先根据key计算出一个16bit的值(CRC16算法),再用这个数值对16384取模,对应的模就是哈希槽的位置
集群搭建:
1.修改配置文件
daemonize yes #后台启动
port 6379 #修改端口号,从6379到6384
cluster-enabled yes #开启cluster,去掉注释
cluster-config-file nodes.conf
cluster-node-timeout 15000
2.启动多个redis实例
3.创建集群./redis-cli --cluster create ip:port ip:port ip:port(redis5.0之后使用redis-cli创建集群,不需要安装ruby)
4.检查集群./redis-cli --cluster check ip:port
5.查看集群key,slot,slave,./redis-cli --cluster info ip:port
常用命令:
CLUSTER INFO 打印集群的信息
CLUSTER NODES 列出集群当前已知的所有节点(node),以及这些节点的相关信息。
CLUSTER MEET 将 ip 和 port 所指定的节点添加到集群当中,让它成为集群的一份子。
CLUSTER FORGET <node_id> 从集群中移除 node_id 指定的节点。
CLUSTER REPLICATE <node_id> 将当前节点设置为 node_id 指定的节点的从节点。
CLUSTER SAVECONFIG 将节点的配置文件保存到硬盘里面。
CLUSTER ADDSLOTS [slot …] 将一个或多个槽(slot)指派(assign)给当前节点。
CLUSTER DELSLOTS [slot …] 移除一个或多个槽对当前节点的指派。
CLUSTER FLUSHSLOTS 移除指派给当前节点的所有槽,让当前节点变成一个没有指派任何槽的节点。
CLUSTER SETSLOT NODE <node_id> 将槽 slot 指派给 node_id 指定的节点。
CLUSTER SETSLOT MIGRATING <node_id> 将本节点的槽 slot 迁移到 node_id 指定的节点中。
CLUSTER SETSLOT IMPORTING <node_id> 从 node_id 指定的节点中导入槽 slot 到本节点。
CLUSTER SETSLOT STABLE 取消对槽 slot 的导入(import)或者迁移(migrate)。
CLUSTER KEYSLOT 计算键 key 应该被放置在哪个槽上。
CLUSTER COUNTKEYSINSLOT 返回槽 slot 目前包含的键值对数量。
CLUSTER GETKEYSINSLOT 返回 count 个 slot 槽中的键。
CLUSTER SLAVES node-id 返回一个master节点的slaves 列表
客户端访问:
redis每个实例在连接时会把槽信息发送给其他实例,这样每个实例上都会有实例与槽的映射信息
连接建立成功后,实例把槽信息发送给客户端,客户端缓存槽信息,当请求键值对时,先计算所对应的哈希槽,根据槽访问实例
实例的槽变更后:
redis把所有槽重新分配,客户端发来命令
还在当前实例
分配给其他实例的过程中:返回ASK(不会缓存) 槽 ip:端口,意思是客户端需要先给目标op这个实例发送一个ASKING命令,让这个实例允许执行客户端接下来发送的命令
分配完成(在其他实例上):返回MOVE(会缓存) 槽 ip:端口,向其他实例发送命令

  • 0
    点赞
  • 0
    评论
  • 2
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

相关推荐
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师:CSDN官方博客 返回首页
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值