Redis中的slots
什么是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相关推荐
- 函数指针--Nginx和Redis中两种回调函数写法
1.Nginx和Redis中两种回调函数写法 #include <stdio.h>//仿Nginx风格 //结构外声明函数指针类型 typedef void (*ngx_connectio ...
- Redis初学:14(Redis中的事务)
Redis中的事务 Redis的事务定义 Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化.按顺序地执行.事务在执行的过程中,不会被其他客户端发送来的命令请求所打断. Redis事务的主 ...
- Redis中字符串string数据类型(保存(设置键值、过期时间、设置多个键值、追加值)、获取(获取单一键值、获取多个键值))
字符串类型是 Redis 中最为基础的数据存储类型,它在 Redis 中是二进制安全的,这便意味着该类型可以接受任何格式的数据,如JPEG图像数据或Json对象描述信息等.在Redis中字符串类型的V ...
- php redis删除所有key,redis中批量删除key的方法
Redis是一个高性能的key-value数据库.redis中可以借助Linux的xargs指令来批量删除key,也可以使用flushdb和flushall命令删除所有key. 批量删除Key Red ...
- redis 中 set 和 hset 有什么不同,什么时候使用 hset 什么时候使用set?
转载:https://blog.csdn.net/wab719591157/article/details/73379844 redis 中存数据时,到底什么时候用 hset 相比于 set 存数据 ...
- 图解|深入理解跳表及其在Redis中的应用
跳跃链表及其应用是非常热门的问题,深入了解其中奥秘大有裨益,不吹了,快开始品尝这美味的知识吧! 跳跃链表的基本概念 初识跳表 跳跃列表是一种数据结构.它允许快速查询一个有序连续元素的数据链表.跳跃列表 ...
- 阿里二面:Redis 中的 AOF 文件太大了怎么办?
一.前言 写这篇文章的目的是来自我的一位粉丝的投稿,说面试阿里被问到了这个问题.不得不说阿里的面试问的都挺有质量,一般的我们只会关注 Redis 的两种持久化方式 RDB 和 AOF.但老周这里盲猜面 ...
- Redis中五大数据结构的底层实现
来自:DBAplus社群 作者介绍 田兆壮,新炬网络开发工程师.具备扎实的Java.Scala开发经验,熟练使用Python和Shell等脚本语言:具备前后端开发能力,熟练使用关系型数据库和非关系型数 ...
- javca中redis获取value_接口测试:如何从redis中获取短信验证码
问题:重置密码接口.注册接口的入参需要用到短信验证码接口发出的短信,短信验证码存到了Redis里.如何从Redis中取出? 解决办法:(首先鸣谢开发小伙伴薛同学!) 薛同学给了Redis的IP地址.端 ...
最新文章
- mysql 语音_MySQL 在各种程序语音的连接字符串(转)
- Nutanix 将社区版代码带入云中
- Oracle数据库修改字段类型
- 将计算机退出域 脚本
- sqoop2操作流程
- mysql 自动分表_Mysql Event 自动分表
- python内存池机制_看过来啦!教你用Python进行内存管理
- mysql varchar 2000能存_mysql 数据库 varchar 到底可以存多少数据呢,长文慎入
- C++PrimerPlus学习——第九章编程练习
- Time flies
- DiskFileItemFactory
- ubuntu 开发java_Ubuntu下搭建java开发环境
- 程序猿软件开发保护眼睛,win7设置窗口护眼模式?
- partio 配置踩坑
- Exchange高危0day漏洞 -- 直接拿下你的域控和服务器 -- 立即行动!CVE-2021-26855
- cenntos7安装Nginx添加passenger模块
- 消息队列的全双工通信
- 苹果WatchKit轻松入门
- 【HTML】html基本标签-1(文字,列表,图片标签)
- laptop外接显示器
热门文章
- 2022年3月电子学会Python等级考试试卷(三级)答案解析
- CTFSHOW 新生杯web
- buuoj Pwn writeup 206-210
- matlab 圆锥投影,MATLAB 表达式 2*2^(3^2) 的结果是 ( )
- stm32c语言arctan函数,全定点 快速 ATAN2 反正切函数
- SpringBoot+SpringWebFlux +Spark JAVA 版
- 世界银行领导Bond-I二级市场区块链债务交易
- Sysbench常用命令
- 软件保护工具VMProtect将许可系统集成到应用程序(6)——限制免费升级期限
- 三子棋游戏 2020-12-29