您当前的位置:首页 > 计算机 > 软件应用 > 数据库 > Redis

如何搭建 Redis 集群

时间:11-06来源:作者:点击数:

1. Redis 简介

Redis 是一个 key-value 存储系统。和 Memcached 类似,它支持存储的 value 类型相对更多,包括 string(字符串)、list(链表)、set(集合)、zset(sorted set —有序集合) 和 hash(哈希类型)。

这些数据类型都支持 push/pop、add/remove 及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。

在此基础上,redis 支持各种不同方式的排序。与 memcached 一样,为了保证效率,数据都是缓存在内存中。

区别的是 redis 会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了 master-slave(主从) 同步。

Redis 是一个高性能的 key-value 数据库。 

redis 的出现,很大程度补偿了 memcached 这类 key/value 存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。

它提供了 Java,C/C++,C#,PHP,JavaScript,Perl,Object-C,Python,Ruby,Erlang 等客户端,使用很方便。

2. Redis 集群介绍

Redis 集群是一个提供在多个 Redis 间节点间共享数据的程序集。

Redis 集群并不支持处理多个 keys 的命令 , 因为这需要在不同的节点间移动数据 , 从而达不到像 Redis 那样的性能 , 在高负载的情况下可能会导致不可预料的错误。

Redis 集群通过分区来提供一定程度的可用性 , 在实际环境中当某个节点宕机或者不可达的情况下继续处理命令,Redis 集群的优势:

  • 自动分割数据到不同的节点上。
  • 整个集群的部分节点失败或者不可达的情况下能够继续处理命令。

3. Redis 主从复制

3.1 主从复制的简单流程介绍:

  • Master 可以拥有多个 slave;
  • 多个 slave 可以连接同一个 Master 外,还可以连接到其他的 slave;
  • 主从复制不会阻塞 Master 在主从复制时,Master 可以处理 client 请求;
  • 提供系统的伸缩性。

3.2 主从复制简单原理的过程

(1)slave 与 Master 建立连接,发送 sync 同步命令;

也就是说当用户在 Master 写入一条命令后,他们之间会通过一些算法把数据同步到每一个 slave 上;

(2)Msater 会开启一个后台进程,将数据库快照保存到文件中。同时 Master 主进程会开始收集新的写命令并缓存;

(3)后台完成保存后,就将文件发送给 slave;

(4)slave 将此文件保存在硬盘上。

4. Redis Sentinel(哨兵)模式

4.1 Sentinel 工作方式

  • 每个 Sentinel 以每秒钟一次的频率向它所知的 Master,Slave 以及其他 Sentinel 实例发送一个 PING 命令;
  • 如果一个实例(instance)距离最后一次有效回复 PING 命令的时间超过 down-after-milliseconds 选项所指定的值, 则这个实例会被 Sentinel 标记为主观下线;
  • 如果一个 Master 被标记为主观下线,则正在监视这个 Master 的所有 Sentinel 要以每秒一次的频率确认 Master 的确进入了主观下线状态;
  • 当有足够数量的 Sentinel(大于等于配置文件指定的值)在指定的时间范围内确认 Master 的确进入了主观下线状态, 则 Master 会被标记为客观下线;
  • 在一般情况下, 每个 Sentinel 会以每 10 秒一次的频率向它已知的所有 Master,Slave 发送 INFO 命令;
  • 当 Master 被 Sentinel 标记为客观下线时,Sentinel 向下线的 Master 的所有 Slave 发送 INFO 命令的频率会从 10 秒一次改为每秒一次;
  • 若没有足够数量的 Sentinel 同意 Master 已经下线, Master 的客观下线状态就会被移除。

若 Master 重新向 Sentinel 的 PING 命令返回有效回复, Master 的主观下线状态就会被移除。

123
方便获取更多学习、工作、生活信息请关注本站微信公众号城东书院 微信服务号城东书院 微信订阅号
推荐内容
相关内容
栏目更新
栏目热门