尽管 Redis 的性能很好,但是有时候依旧满足不了应用的需要,比如过多的用户进入主页,导致 Redis 被频繁访问,此时就存在大量的读操作。显然单靠一台 Redis 服务器是完全不够用的 当主服务器不能正常工作的时候,我们希望从服务器代替原来的主服务器,作为灾备,以保证系统可以继续正常的工作 。
所谓主从架构设计的思路大概是:
这只是一种大概的思路, 每一种数据存储的软件都会根据其自身的特点对上面的这几点思路加以改造,但是万变不离其宗 , 只要理解了这几点就很好理解 Redis 的复制机制。
这个时候读数据就可以随机从从服务器上读取,当从服务器是多台的时候,那么单台服务器的压力就大大降低了,这十分有利于系统性能的提高, 当主服务器出现不能工作的情况时,也可以切换为其中的一台从服务器继续让系统稳定运行,所以也有利于系统运行的安全性。当然由于 Redis 自身具备的特点,所以其也有实现主从同步的特殊方式。
对 Redis 进行主从同步的配置分为主机与从机,主机是一台,而从机可以是多台 .
首先,明确主机。当你能确定哪台机子是主机的时候,关键的两个配置是 dir和dbfilename 选项, 当然必须保证这两个文件是可写的。
对于 Redis 的 默认配置而言, dir 的默认值为“./”,而对于 dbfilename 的默认值为“ dump.rbd ”。换句话说,默认采用 Redis当前目录的 dump.rbd 文件进行同步。
对于主机而言,只要了解这多信息,很简单 。
其次 , 在明确了从机之后,进行进一步配置所要关注的只有 slaveof这个配置选项,它的配置格式是 :
slaveof server port
其中 server 代表主机,port代表端口。
当从机 Redis 服务重启 时,就会同步对应主机的数据了。当不想让从机继续复制主机的数据时,可以在从机的 Redis 命令客户端发送slaveof no one
命令,这样从机就不会再接收主服务器的数据更新了。
又或者原来主服务器已经无法工作了,而你可能需要去复制新的主机,这个时候执行 slaveof sever port
就能让从机复制另外一台主机的数据了。
在实际的 Linux 环境中,配置文件 redis.conf 中还有一个 bind 的配置 , 默认为 127 .0 .0.1
,也就是只允许本机访 问 ,把它修改为 bind 0.0.0.0
,其他的服务器就能够访 问了 .
以上 5 步就是 Redis 主从同步的过程。
只是在主服务器同步到从服务器的过程中,需要备份文件,所以在配置的时候一般需要预留 一些内存空间给主服务器,用以腾出空间执行备份命令。 一般来说主服务器使用50%~65%的内存空间 ,以为 主从复制留下可用的内存空间。
主从切换技术的方法是: 当主服务器右机后,需要手动把一台从服务器切换为主从服务器,这就需要人工干预,既费时费力,汪会造成一段时间内服务不可用,更多的时候,我们优先考虑Redis的哨兵模式。