什么是slots?

[OK] All nodes agree about slots configuration.

>>> Check for open slots...

>>> Check slots coverage...

[OK] All  16384 slots covered.

一个 Redis 集群包含 16384 个插槽(hash slot), 数据库中的每个键都属于这 16384 个插槽的

其中一个,集群使用公式 CRC16(key) % 16384 来计算键 key 属于哪个槽, 其中 CRC16(key) 语

句用于计算键 key 的 CRC16 校验和 。

集群中的每个节点负责处理一部分插槽。 举个例子, 如果一个集群可以有主节点, 其中:

节点 A 负责处理 0 号至 5460 号插槽。

节点 B 负责处理 5461 号至 10922 号插槽。

节点 C 负责处理 10923 号至 16383 号插槽。

在集群中录入值

在redis-cli每次录入、查询键值,redis都会计算出该key应该送往的插槽,如果不是该客户端对应

服务器的插槽,redis会报错,并告知应前往的redis实例地址和端口。

redis-cli客户端提供了 –c 参数实现自动重定向。

如 redis-cli  -c –p 6379 登入后,再录入、查询键值对可以自动重定向。

不在一个slot下的键值,是不能使用mget,mset等多键操作。

如:mest k1 v1 k2 v2 k3 v3  会出现  (error) CROSSLOT Keys in request don't hash to the same slot

可以通过{}来定义组的概念,从而使key中{}内相同内容的键值对放到一个slot中去。

如:mset k1{cust} v1 k2{cust} v2 k3{cust} v3

查询集群中的值

CLUSTER GETKEYSINSLOT <slot><count> 返回 count 个 slot 槽中的键。

查看集群中的插槽 cluster keyslot cust => (integer) 4847

查看4847插槽中的key有多少个 cluster countkeysinslot 4847 => (integer) 3

获取4847插槽中的10个值 cluster getkeysinslot 4847 10 => "k1{cust}" "k2{cust}" "k3{cust}"

只显示了3个是因为我们只存入了三个值

故障恢复

如果主节点下线?从节点能否自动升为主节点?注意:15秒超时

主节点恢复后,主从关系会如何?主节点回来变成从机

如果所有某一段插槽的主从节点都宕掉,redis服务是否还能继续?

可以分为以下两种情况:

如果某一段插槽的主从都挂掉,而cluster-require-full-coverage 为yes ,那么 ,整个集群都挂掉。

如果某一段插槽的主从都挂掉,而cluster-require-full-coverage 为no ,那么,该插槽数据全都不能

使用,也无法存储。

我们可以在redis.conf中修改参数  cluster-require-full-coverage。

以上就是Redis中slots的有关内容。

Redis中的slots相关推荐

  1. 函数指针--Nginx和Redis中两种回调函数写法

    1.Nginx和Redis中两种回调函数写法 #include <stdio.h>//仿Nginx风格 //结构外声明函数指针类型 typedef void (*ngx_connectio ...

  2. Redis初学:14(Redis中的事务)

    Redis中的事务 Redis的事务定义 Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化.按顺序地执行.事务在执行的过程中,不会被其他客户端发送来的命令请求所打断. Redis事务的主 ...

  3. Redis中字符串string数据类型(保存(设置键值、过期时间、设置多个键值、追加值)、获取(获取单一键值、获取多个键值))

    字符串类型是 Redis 中最为基础的数据存储类型,它在 Redis 中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等.在Redis中字符串类型的V ...

  4. php redis删除所有key,redis中批量删除key的方法

    Redis是一个高性能的key-value数据库.redis中可以借助Linux的xargs指令来批量删除key,也可以使用flushdb和flushall命令删除所有key. 批量删除Key Red ...

  5. redis 中 set 和 hset 有什么不同,什么时候使用 hset 什么时候使用set?

    转载:https://blog.csdn.net/wab719591157/article/details/73379844 redis 中存数据时,到底什么时候用  hset 相比于 set 存数据 ...

  6. 图解|深入理解跳表及其在Redis中的应用

    跳跃链表及其应用是非常热门的问题,深入了解其中奥秘大有裨益,不吹了,快开始品尝这美味的知识吧! 跳跃链表的基本概念 初识跳表 跳跃列表是一种数据结构.它允许快速查询一个有序连续元素的数据链表.跳跃列表 ...

  7. 阿里二面:Redis 中的 AOF 文件太大了怎么办?

    一.前言 写这篇文章的目的是来自我的一位粉丝的投稿,说面试阿里被问到了这个问题.不得不说阿里的面试问的都挺有质量,一般的我们只会关注 Redis 的两种持久化方式 RDB 和 AOF.但老周这里盲猜面 ...

  8. Redis中五大数据结构的底层实现

    来自:DBAplus社群 作者介绍 田兆壮,新炬网络开发工程师.具备扎实的Java.Scala开发经验,熟练使用Python和Shell等脚本语言:具备前后端开发能力,熟练使用关系型数据库和非关系型数 ...

  9. javca中redis获取value_接口测试:如何从redis中获取短信验证码

    问题:重置密码接口.注册接口的入参需要用到短信验证码接口发出的短信,短信验证码存到了Redis里.如何从Redis中取出? 解决办法:(首先鸣谢开发小伙伴薛同学!) 薛同学给了Redis的IP地址.端 ...

最新文章

  1. mysql 语音_MySQL 在各种程序语音的连接字符串(转)
  2. Nutanix 将社区版代码带入云中
  3. Oracle数据库修改字段类型
  4. 将计算机退出域 脚本
  5. sqoop2操作流程
  6. mysql 自动分表_Mysql Event 自动分表
  7. python内存池机制_看过来啦!教你用Python进行内存管理
  8. mysql varchar 2000能存_mysql 数据库 varchar 到底可以存多少数据呢,长文慎入
  9. C++PrimerPlus学习——第九章编程练习
  10. Time flies
  11. DiskFileItemFactory
  12. ubuntu 开发java_Ubuntu下搭建java开发环境
  13. 程序猿软件开发保护眼睛,win7设置窗口护眼模式?
  14. partio 配置踩坑
  15. Exchange高危0day漏洞 -- 直接拿下你的域控和服务器 -- 立即行动!CVE-2021-26855
  16. cenntos7安装Nginx添加passenger模块
  17. 消息队列的全双工通信
  18. 苹果WatchKit轻松入门
  19. 【HTML】html基本标签-1(文字,列表,图片标签)
  20. laptop外接显示器

热门文章

  1. 2022年3月电子学会Python等级考试试卷(三级)答案解析
  2. CTFSHOW 新生杯web
  3. buuoj Pwn writeup 206-210
  4. matlab 圆锥投影,MATLAB 表达式 2*2^(3^2) 的结果是 (    )
  5. stm32c语言arctan函数,全定点 快速 ATAN2 反正切函数
  6. SpringBoot+SpringWebFlux +Spark JAVA 版
  7. 世界银行领导Bond-I二级市场区块链债务交易
  8. Sysbench常用命令
  9. 软件保护工具VMProtect将许可系统集成到应用程序(6)——限制免费升级期限
  10. 三子棋游戏 2020-12-29