Redis 持久化和主从配置-程序旅途
该图片由LUM3NPixabay上发布

之前写了 CentOS 7 安装 Redis,今天说说 Redis 的持久化和主从配置。

Redis持久化

Redis 有两种持久化方式,RDB 和 AOF。RDB 是将 Redis 的内存状态保存到磁盘,也就是所谓的快照。AOF 保存对 Redis 的写命令(如set、sadd、rpush)来记录数据库状态的,即保存对 Redis数据库的写操作。

Redis 默认开启RDB,在配置文件中可以配置自动保存条件,默认如下

# 服务器在900秒之内被修改了1次
save 900 1
# 服务器在300秒之内被修改了10次
save 300 10
# 服务器在60秒之内被修改了10000次
save 60 10000

只要满足其中一个条件,服务器就会执行 BGSAVE 命令进行快照持久化

开启 AOF 持久化,在配置文件中找到 appendonly,设置为 yes,以下是 AOF 相关的配置

#AOF 和 RDB 持久化方式可以同时启动并且无冲突。  
#如果AOF开启,启动redis时会加载aof文件,这些文件能够提供更好的保证。 
appendonly yes

# 只增文件的文件名称。(默认是appendonly.aof)  
# appendfilename appendonly.aof 
#redis支持三种不同的写入方式:  
#  
# no:不调用,之等待操作系统来清空缓冲区当操作系统要输出数据时。很快。  
# always: 每次更新数据都写入仅增日志文件。慢,但是最安全。
# everysec: 每秒调用一次。折中。
appendfsync everysec  

# 设置为yes表示rewrite期间对新写操作不fsync,暂时存在内存中,等rewrite完成后再写入.官方文档建议如果你有特殊的情况可以配置为'yes'。但是配置为'no'是最为安全的选择。
no-appendfsync-on-rewrite no  

# 自动重写只增文件。  
# redis可以自动盲从的调用‘BGREWRITEAOF’来重写日志文件,如果日志文件增长了指定的百分比。  
# 当前AOF文件大小是上次日志重写得到AOF文件大小的二倍时,自动启动新的日志重写过程。
auto-aof-rewrite-percentage 100  
# 当前AOF文件启动新的日志重写过程的最小值,避免刚刚启动Reids时由于文件尺寸较小导致频繁的重写。
auto-aof-rewrite-min-size 64mb

Redis 主从配置

Redis 的主从配置是在从服务器配置的,只需要在从服务器的配置文件中指定主服务器的ip和端口号。

Redis 5.0.0版本前,使用 SLAVEOF 作为复制命令,但是从 5.0.0开始 SLAVEOF 改为了 REPLICAOF。以 Redis3.0.503为例

slaveof 127.0.0.1 6379

前面写过一篇 Windows包管理器Chocolatey ,在 windows 10 中使用下面的命令安装 redis

choco install redis-64

安装完后,打开console,执行下面的命令启动主服务器

redis-server

Redis 持久化和主从配置-程序旅途

新打开一个console,输入下面的命令启动从服务器,端口号为 6380,并指定主服务器为 127.0.0.1 6379

redis-server --port 6380 --slaveof 127.0.0.1 6379

Redis 持久化和主从配置-程序旅途

主服务器打印如下信息

Redis 持久化和主从配置-程序旅途

redis-cli 登录主服务器,设置 name chengxulvtu

Redis 持久化和主从配置-程序旅途

redis-cli -h 127.0.0.1 -p 6380 登录从服务器,查看 name

Redis 持久化和主从配置-程序旅途