Redis集群的配置与使用
redis集群
什么是redis集群?
redis是指启动N个节点,将整个数据库分布在这N个节点中,每个节点存储总数据的1/N。
redis集群实现了对redis的水平扩容
redis集群通过分区来提供一定程度的可用性,即使集群中有一部分失效或者无法进行通讯,集群也可以继续处理命令请求。
集群解决的问题:
实现内存的扩容
实现高并发写
集群实现步骤
1.集群配置
2.启动每一个节点redis服务
命令:
redis-server 配置文件
3.组合集群的每一个节点
命令:
redis-cli --cluster create --cluster-replicas 1(配置策略) 每一个节点的ip:port
- 注意:
1.组合之前应该检查每一个节点是否生成对应的node*.conf文件,否则说明配置维成功**
2.应该配置host使用内网ip,不用使用127.0.0.1本地地址
集群的使用
1.集群的连接
- 使用普通方式连接
- 存储数据时可能出现MOVED重定向到另外的主机的错误
- 出现此错误的原因:
集群的时候对每一个key对进行了分区,即每一个key对应着唯一的插槽(slot) - 什么是slot?
一个 Redis 集群包含 16384 个插槽(hash slot), 数据库中的每个键都属于这 16384 个插槽的其中一个, 集群使用公式 CRC16(key) % 16384 来计算键 key 属于哪个槽, 其中 CRC16(key) 语句用于计算键 key 的 CRC16 校验和 。
- 使用集群方式连接
- 存储数据时,若此数据不在该主机负责的插槽中,则自动重定向到负责此数据的主机上且存储此数据
- 即使连接的不是主机,集群会自动切换主机存储。主机写,从机读。
- 无中心化主从集群。无论从哪台主机写的数据,其他主机上都能读到数据。
- 在连接后,可通过命令cluster nodes查看集群配置
息
2.在集群中录入值
mset k1 v1 k2 v2 k3 v3
可能会出现不在同一个slot的key不能同时设置- 即不在一个slot下的键值,是不能使用mget,mset等多键操作。
- 解决方法
在每一个key后面加{描述信息}即可
即mset k1{s1} v1 k2{s1} v2 k3{s3} v3
- 即不在一个slot下的键值,是不能使用mget,mset等多键操作。
查询集群中的值
cluster keyslot key名或组名
–查看插槽的对应的值cluster countkeysinslot key名或组名
–查看插槽的key的数量cluster getkeysinslot key名或组名
–获取插槽含有的key
- 使用普通方式连接
集群的故障恢复
- 集群故障后主节点与子节点的关系:
- 若主节点发生故障,过一段时间子节点会自动成为主节点,取决于你的配置信息(cluster-timeout),恢复后,主节点会变成子节点的从机
- 若主节点发生故障,过一段时间子节点会自动成为主节点,取决于你的配置信息(cluster-timeout),恢复后,主节点会变成子节点的从机
- 如果所有某一段插槽的主从节点都宕掉,redis服务是否还能继续?
- 取决于redis.conf中的参数
cluster-require-full-coverage
- 如果某一段插槽的主从都挂掉,而
cluster-require-full-coverage
为yes ,那么 ,整个集群都挂掉 - 如果某一段插槽的主从都挂掉,而
cluster-require-full-coverage
为no ,那么,该插槽数据全都不能使用,也无法存储。
- 取决于redis.conf中的参数
- 集群故障后主节点与子节点的关系:
集群的主子节点分配策略
- 主节点和主节点不应该在同一个机器服务
- 主节点和子节点不应该在同一个机器服务。
- 原因:若主节点和主节点在同一个机器服务,那这个机器发生故障,即全部数据库故障,redis服务停止。同理,若主节点和子节点在同一个机器服务,那主节点发生故障,则子节点也发生故障,若不在同一台机器,则子节点在主节点发生故障后可以成为主节点。
Redis集群的配置与使用相关推荐
- redis集群的配置
1.修改主机的主机名称 [root@localhost ~]# vim/etc/sysconfig/network NETWORKING=yes HOSTNAME=localhost.localdom ...
- redis集群主从配置
集群环境安装(ruby的环境云主机和虚拟机都不需要装) 因为集群命令文件需要ruby语言的支持(自行下载) http://www.ruby-lang.org/en/downloads/ 这个是下载地址 ...
- [转]Redis集群的配置
一:memcache 和 Redis 对比总结 [memecache 特点] 1:速度最快(没有自测,但网上有详细的测试用例) 2:支持水平扩展,可以任意添加节点 [redis 特点] 1:速度没有m ...
- redis集群yml配置lettuce
在springboot中使用redis很方便,只要在yml配置好reids的相关配置项就可以直接使用. 无论是单实例还是集群,都能配置: spring:application:name: gatere ...
- Redis 集群密码配置
>补充一下密码相关配置 在config配置文件中与密码有关的两个配置属性: 1)requirepass 为节点设置密码,访问该节点需要首先使用 auth xxxxxx 命令. 2)mastera ...
- redis集群版配置三种方式
redis的三种集群方式 redis有三种集群方式:主从复制,哨兵模式和集群. 1.主从复制 主从复制原理: 从服务器连接主服务器,发送SYNC命令: 主服务器接收到SYNC命名后,开始执行BGSAV ...
- Redis集群——主从配置
一主二从环境 host port role 192.168.186.200 6379 master 192.168.186.201 6379 slave 192.168.186.202 6379 sl ...
- Redis单例、主从模式、sentinel以及集群的配置方式及优缺点对比
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:爱宝贝丶 my.oschina.net/zhangxufen ...
- spring 使用redis集群配置
上面两篇介绍了redis集群的配置合一些基本的概念,所以接下来当然是要在项目中使用咯,redis的java支持已经做的非常好了,所以我们来试着使用这些api来进行redis的操作,首先我们需要操作re ...
最新文章
- /etc/profile ,/etc/bashrc ,~/.bash_profile,~/ .bashrc 区别与联系
- 一个女生不主动联系你还有机会吗?
- elasticsearch 最佳实践
- Java笔记:与系统交互、系统相关的类,Object类
- 教你用java统计目录下所有文档的词频
- gulp 安装时一直提示缺少模块( Cannot find module 'gulp-load-plugins')
- Linux系统rootpassword改动
- css 控制图片最大宽度
- 安卓USB开发教程 六 安卓 AOA 2.0
- nginx的脚本引擎(一)
- 一些服务器客户端的c例子
- 学习设计模式 - 六大基本原则之开闭原则
- python入门——P37类和对象:面向对象编程
- LQR、Stochastic Bandits、Bayesian Bandits、Contextual Bandits与基于模型的强化学习浅析
- 小程序坑 redirectTo 计时器 setInterval clearInterval
- 解构淘宝SPM/SCM流量跟踪体系
- rainmeter使用教程_如何使用Rainmeter自定义Windows桌面
- 西电 计算机学院 博后流动站,西电7个博士后科研流动站接受专家组综合评估检查...
- 杨立昆怒怼机器人索菲娅:AI硬加人类意识是揠苗助长
- 3D立体相册不过是冷锋蓝plus版 html+css
热门文章
- UGUI 动手制作字体
- 六招搞定你爱的坏男人
- 绿色手绘插画幼儿园家长会PPT模板
- android换皮肤思路总结
- 初三同学的选择(续)
- 使用三次多项式拟合天猫双十一交易额
- C语言·1个水分子的质量约为3.0*10^-23克。1夸脱水大约是950克。编写程序,输入水的夸脱数,显示水分子数量。
- 机器学习实验(十三):90%的准确率,根据中文名字预测性别!
- 求旋转数组(左旋和右旋)的常用两个方法(详解)
- c语言多叉树运用存储源代码,C语言的家谱图想求一个运用结构链表的源程序我有多叉树版的源程 爱问知识人...