小码今天去面试。
面试官:给我介绍一下Redis集群,
小码:啊,平时开发用的都是单机Redis,没怎么用过集群了。
面试官:好的,出门右转不谢。
小码内心困惑:在小公司业务量也不大,单机的 Redis 完全够用,也不会发生宕机问题啊。面试要问到 Redis 集群该怎么办呢?
Redis 为何要有集群
很多小伙伴也有类似的困惑,自己的公司并不大。并发量、访问量要求不高,使用单机 Redis 就能很好的解决数据请求的问题。为啥要使用集群呢?
对于访问量小、并发低的系统,对数据的高可用要求不高的数据,单机部署都能满足需求。但是在大公司,随便一个系统的QPS都是成千上万,对系统的高可用、高并发要求比较高,这个时候就需要要使用Redis集群模式了,Redis有三种集群模式:
-
主从复制模式 -
哨兵模式 -
Cluster 模式
主从复制模式
Redis想要不丢失数据,就需要开始持久化,数据会写入到磁盘中,这样即使服务关闭再重启服务器后,数据也能从硬盘加载到内存中。但是如果服务器的硬盘出现故障,也会导致数据丢失。
为了避免硬盘故障问题,需要将数据复制在多个副本上,这样即使一个服务出现故障,其他服务器也能提供数据服务。
Redis提供了主从模式,一个主数据库master绑定多个从数据库slave:

主数据可以读和写,从数据库一般是只读,主从库之间采用读写分离,主数据库数据更新后同步复制给绑定的从数据库,主从数据库的数据保持一致:

数据主从同步原理
-
从数据库启动后,连接主数据库,发送 SYNC命令。 -
主数据库接收到SYNC命令后,开始执行 BGSAVE命令生成RDB文件并使用缓冲区记录后面执行的所有写命令。 -
主数据库执行完 BGSAVE命令之后,向所有从数据库发送RDB文件。从数据库加载RDB文件。 -
主数据将记录的缓存区所有的写命令发送给从数据库,从数据库执行命令。

SYNC每次从服务重启,都会请求所有的数据。如果服务宕机再重启还是同步所有的数据,就会造成资源的浪费,所以有了PSYNC命令,PSYNC有完整同步和部分同步,其中完整同步和SYNC一致,而部分同步是根据数据偏移量复制数据。
主从复制服务搭建
Redis单机搭建可以查看前面写的的教程
Centos安装单机Redis
首先创建三个文件夹6380、6381、6382:
127.0.0.1:6381> get name
"jeremy"
经过以上测试,说明主服务器的数据,从服务器也能同步获取。主从服务都搭建成功。
总结
-
主从模式:
SYNC同步命令给主数据库,主数据库接收到命令之后,生成RDB文件。并且使用缓冲区记录所有写命令。写完毕后发送RDB文件给每个从数据库解析,以及发送缓存写命名给所以从数据库执行。本篇文章来源于微信公众号: 码出code
微信扫描下方的二维码阅读本文

Comments NOTHING