专栏名称: GitChat技术杂谈
GitChat是新时代的学习工具。
目录
相关文章推荐
码农翻身  ·  “DeepSeek出了一个昏招!” ·  昨天  
OSC开源社区  ·  大模型撞上“算力墙”,超级应用的探寻之路 ·  昨天  
程序员的那些事  ·  《人民日报》批谷歌安卓系统:假开源、真垄断 ·  2 天前  
OSC开源社区  ·  2024年中国开源模型:崛起与变革 ·  5 天前  
51好读  ›  专栏  ›  GitChat技术杂谈

如何搭建 Redis 集群

GitChat技术杂谈  · 公众号  · 程序员  · 2018-02-01 08:59

正文


本文来自作者 only you GitChat 上分享 「如何搭建 Redis 集群」, 阅读原文 查看交流实录。

文末高能

编辑 | 哈比

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 的确进入了主观下线状态;







请到「今天看啥」查看全文