Redis集群(一):基本概念

一、使用版本:3.0.0.0

二、基本概念:

  1. Redis 集群是一个可以在多个 Redis 节点之间进行数据共享的设施(installation)。
  2. Redis 集群使用数据分片(sharding)而非一致性哈希(consistency hashing)来实现: 一个 Redis 集群包含 16384 个哈希槽(hash slot), 数据库中的每个键都属于这 16384 个哈希槽的其中一个, 集群使用公式 CRC16(key) % 16384 来计算键 key 属于哪个槽, 其中CRC16(key) 语句用于计算键 key 的 CRC16 校验和
  3. 集群中的每个节点负责处理一部分哈希槽。 举个例子, 一个集群可以有三个哈希槽, 其中:
    1. 节点 A 负责处理 0 号至 5500 号哈希槽。
    2. 节点 B 负责处理 5501 号至 11000 号哈希槽。
    3. 节点 C 负责处理 11001 号至 16384 号哈希槽。
  4. 节点的添加和移除
    1. 如果用户将新节点 D 添加到集群中, 那么集群只需要将节点 A 、B 、 C 中的某些槽移动到节点 D 就可以了。
    2. 如果用户要从集群中移除节点 A , 那么集群只需要将节点 A 中的所有哈希槽移动到节点 B 和节点 C , 然后再移除空白(不包含任何哈希槽)的节点 A 就可以了。
  5. 主从节点的作用
    1. 假如在创建集群的时候(或者至少在节点 B 下线之前), 我们为主节点 B 添加了从节点 B1 , 那么当主节点 B 下线的时候, 集群就会将 B1 设置为新的主节点, 并让它代替下线的主节点 B , 继续处理 5501 号至 11000 号的哈希槽, 这样集群就不会因为主节点 B 的下线而无法正常运作了。
  6. 异步复制(虽然是异步复制,但是执行写命令和复制命令到从节点几乎是同时执行,所以一般不会丢失数据)
    1. 客户端向主节点 B 发送一条写命令。
    2. 主节点 B 执行写命令,并向客户端返回命令回复。
    3. 主节点 B 将刚刚执行的写命令复制给它的从节点 B1 、 B2 和 B3 。

三、参考资料:

http://redisdoc.com/topic/cluster-tutorial.html

http://www.redis.net.cn/

http://redis.io/

来自为知笔记(Wiz)

时间: 2024-10-01 15:12:04

Redis集群(一):基本概念的相关文章

redis解决方案之三种集群模式的概念与部署

上篇文章为大家总结了redis命令并讲述了持久化,今天我们来看一下redis的三种集群模式:主从复制,哨兵集群,Cluster集群 本篇文章先介绍redis-cluster,然后再依次介绍它的哨兵集群与主从复制 一.Cluster集群模式概念 redis集群是一个分布式与容错的redis实现.在集群中不存在代理节点与中心节点.后期可以很好的将其进行扩展 此模式也解决了redis高可用与可扩展的问题.但是redis集群不支持需要同时处理多个Key的redis命令 因为执行这些命令需要在多个redi

关于redis集群(几条概念)

redis集群1.节点通过握手来将其他节点添加到自己所处的集群当中.cluster meet 命令将A.B两个节点握手,于是AB节点组成集群,命令实例:CLUSTER MEET <ip> <port>2.每个节点用clusternode结构保存自己节点的信息,比如创建时间.槽口数.节点ip.节点端口.3.节点在接收到一个命令时先判断键所在的槽是否在本节点,若不在就给客户端发送REMOVED命令+键所在节点端口4.若请求的键所在槽正从所求的节点转移向另一槽口那么就会报错,向客户端发送

redis集群概念

1.由多个Redis服务器组成的分布式网络服务集群: 每一个Redis服务器称为节点Node,节点之间会互相通信.两两相连: Redis集群无中心节点. 当用户需要处理更多读请求的时候,添加从节点可以扩展系统的读性能,因为Redis集群重用了单机Redis复制特性的代码,所以集群的复制行为和我们之前介绍的单机复制特性的行为是完全一样的. 2.故障转移 Redis集群的主节点内置了类似Redis Sentinel的节点故障检测和自动故障转移功能,当集群中的某个主节点下线时,集群中的其他在线主节点会

redis集群

redis集群 redis锁 1.Redis集群是一个提供在多个redis节点间共熟数据的程序集. 2.redis集群的数据分片(1)Redis没有使用一致性hash而是引入hash槽的概念.(2)Redis集群共有16384个hash槽(不管redis有几台机器,整个集群一共有16384个hash槽).每个key经过CRC16校验后,对16384取余来决定放到哪个hash槽.(3)比如一个集群有A.B.C.3台机器,那么 节点A,包括0到5500号hash槽 节点B,包含 5501到11000

Redis集群部署(一)

一.Redis集群介绍 Redis 集群是一个提供在多个Redis间节点间共享数据的程序集. Redis集群并不支持处理多个keys的命令,因为这需要在不同的节点间移动数据,从而达不到像Redis那样的性能,在高负载的情况下可能会导致不可预料的错误. Redis 集群通过分区来提供一定程度的可用性,在实际环境中当某个节点宕机或者不可达的情况下继续处理命令. Redis 集群的优势: 自动分割数据到不同的节点上. 整个集群的部分节点失败或者不可达的情况下能够继续处理命令. Redis 集群的数据分

生产环境ehcache迁移到集中式redis集群

原先项目中使用的ehcache分布式缓存,缺点是浪费内存,并且ehcache使用的是jvm进程的内存,因此内存使用很受限制. 还有就是业务中有时希望更新一个业务实体来使对应的缓存失效的场景,这种情况下如果对应业务实体缓存有多台机子那更新实体后更新缓存只能是其中一台,无法全部更新. 基于以上几点,项目希望切换成集中式缓存. 集中式缓存服务端架构是:网易LBS+Twemproxy+redis集群. 缓存客户端使用的是spring Data Redis. 由于Twemproxy代理本身不支持multi

2.Redis集群环境搭建

转载请出自出处:http://www.cnblogs.com/hd3013779515/ 一.基本概念 1.redis集群是一个可以在多个节点之间进行数据共享的设施.redis集群提供了以下两个好处1.1 将数据自动切分(split)到多个节点1.2 当集群中的某一个节点故障时,redis还可以继续处理客户端的请求. 2.一个 Redis 集群包含 16384 个哈希槽(hash slot),数据库中的每个数据都属于这16384个哈希槽中的一个.集群使用公式 CRC16(key) % 16384

spring 使用redis集群配置

上面两篇介绍了redis集群的配置合一些基本的概念,所以接下来当然是要在项目中使用咯,redis的java支持已经做的非常好了,所以我们来试着使用这些api来进行redis的操作,首先我们需要操作redis的架包: <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.7.3</version> <

架构设计:系统存储(18)——Redis集群方案:高性能

1.概述 通过上一篇文章(<架构设计:系统存储(17)--Redis集群方案:高可用>)的内容,Redis主从复制的基本功能和进行Redis高可用集群监控的Sentinel基本功能基本呈现给了读者.虽然本人并不清楚上一篇根据笔者实际工作经验所撰写的文章有什么重大问题,导致那么多朋友集体点踩而且截止目前又没有任何人愿意为笔者指出这些问题,但是这不会影响笔者继续学习.总结技术知识的热情.从这篇文章开始我们一起来讨论Redis中两种高性能集群方案,并且在讨论过程中将上一篇文章介绍的高可用集群方案结合