Redis集群
来源:互联网 发布:node.js和php哪个简单 编辑:程序博客网 时间:2024/06/04 21:48
Redis集群的特性:
1、所有的redis节点彼此互联(通过PING-PONG机制),内部使用二进制协议优化传输速度和带宽。
2、某个节点的fail失效,是通过集群中超过半数的节点检测失效时才真正失效。
3、客户端与redis节点直连,不需要中间代理层。客户端不需要连接集群中所有节点,连接集群中任一可用节点即可。
4、redis-cluster把所有的物理节点映射到[ 0 - 16383 ]slot上,cluster负责维护 node <--> slot <--> value
Redis内置了16384个哈希槽(插槽)
例如:在集群中执行 set a a 时,
1、对key(a)进行crc16算法的计算,得出一个数字。
2、对该数字进行16384的求模,得到0~16383之间的数字,假设得到 6666(插槽)。
3、在集群中获取这个数字是属于哪个节点,假设确定到 node6。
4、跳转到node6节点,执行 set a a。
在集群中执行 get a 时,
1、对key(a)进行crc16算法,得到一个数字。
2、通过该数字,对16384求模,得到 6666(插槽)。
3、定位 6666 是属于 node6节点的。
4、跳转到 node6,执行get a。
Redis-Cluster投票:
容错
1、投票过程是集群中所有master参与,如果半数以上master节点与master节点通信超时(cluster-node-timeout),
认为当前节点挂掉。
2、整个集群不可用(cluster_state:fail):
a、集群的slot映射[ 0 - 16383 ]不完整时。
如果集群中任一master挂掉,且当前master没有slave,集群就会进入fail状态。
b、如果集群中超过半数以上master挂掉,无论是否有slave,集群进入fail状态。
master为主节点
slave为从节点
从节点是主节点的复制版。
为了保证高可用,在主节点挂掉时,可从从节点中存取数据。
Redis集群:
为了保证投票,需要至少3个主节点(master)。
每个主节点,都需要至少一个从节点(slave),因此最少3个从节点。
因此,最少需要6台redis服务器。
……
Redis集群连接:
Redis的单机版默认是16个数据库。但Redis-Cluster集群版,只有一个数据库。
1、使用redis命令行进行客户端连接:
./redis-cli -h 192.168.xx.xx -p xxxx -c。注:加上 -c 参数,节点之间就可以跳转。
2、图形化界面:
弊端:不能进行节点间的跳转,放弃……
3、redis的Java客户端连接:
JedisCluster的API……
待续……
阅读全文
0 0
- redis 集群
- redis集群
- Redis集群
- Redis 集群
- redis集群
- Redis 集群
- redis 集群
- redis 集群
- redis集群
- Redis 集群
- Redis集群
- Redis集群
- redis 集群
- Redis 集群
- redis集群
- redis 集群
- Redis集群
- redis集群
- ruby元编程,基础入门概念理解
- man的使用总结
- MySQL 替换身份证号中的年月日
- iOS-UITableView 滚动到底部和顶部的方法
- ORC格式文件读取
- Redis集群
- Java开发中的23种设计模式详解
- Android简易实战教程--第十二话《代码获取手机总运行内存的大小》
- Android studio 添加com.jakewharton:butterknife:8.5.1注解框架
- Fire Emblem [You Will Win
- linux 下安装jdk
- JVM 内存区域大小参数设置
- hdu2160
- base64加密解密