redis持久化

1.配置aof,并且形成rewrite之前和之后的对比
2.配置rdb,手动命令和后台触发,截图对比持久化之前和之后的数据文件的差异

一.默认开启快照dump

#save "" 不配置rdb
save 900 1					# 900秒1次修改
save 300 10					# 300秒10次修改
save 60 10000					# 60秒1W次修改
rdbcompression yes			# 是否对rdb文件进行压缩
rdbchecksum yes				# 是否对rdb文件进行校验
stop-writes-on-bgsave-error no	# 生成rdb错误是否继续写入,默认不写入
dir /usr/local/redis/data			# rdb保存的目录
dbfilename dump.rdb			# rdb的文件名
  • 1.1 redis启动后会优先读取rdb文件
  • 1.2 save命令会阻塞请求
  • 1.3 bgsave异步保存rdb

二.默认关闭AOF,需手动打开

appendonly yes					# 是否打开aof,默认关闭
appendfilename "appendonly.aof"		# aof文件,保存在dir /usr/local/redis/data
appendfsync everysec				
选项 同步频率
always 每个 Redis 命令都要同步写入硬盘。这样会严重降低 Redis 的性能
everysec 每秒执行一次同步,显式地将多个写命令同步到硬盘
no 让操作系统来决定应该何时进行同步

三.rdb持久化

  • 3.1关闭rdb
save ""
#save 900 1
#save 300 10
#save 60 10000
  • 3.2因为原来修改过,因此存在数据
127.0.0.1:6379> info keyspace
# Keyspace
db0:keys=4,expires=0,avg_ttl=0
db1:keys=1,expires=0,avg_ttl=0
db15:keys=1,expires=0,avg_ttl=0
127.0.0.1:6379> config get dir
1) "dir"
2) "/usr/local/redis/work"
  • 3.3删除rdb文件
rm -rf /usr/local/redis/work/*
  • 3.4开启后没有任何key
127.0.0.1:6379> config get save
1) "save"
2) ""
127.0.0.1:6379> info keyspace
# Keyspace
  • 3.5set一个key并保存重启
27.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> get k1
"v1"
127.0.0.1:6379> save
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> get k2
"v2"
127.0.0.1:6379> bgsave
Background saving started
# 在dir参数目录/usr/local/redis/work/下保存默认rdb文件dump.rdb
# 重启后key存在,数据在save时被持久化
127.0.0.1:6379> info keyspace
# Keyspace
db0:keys=2,expires=0,avg_ttl=0

四.aof持久化

清空所有keyflushall

  • 4.1打开aof,保持rdb关闭
appendonly yes
appendfilename "appendonly.aof"

127.0.0.1:6379> config get appendonly
1) "appendonly"
2) "yes"

  • 4.2set后直接关闭
127.0.0.1:6379> set k1 v1
OK
127.0.0.1:6379> set k2 v2
OK
127.0.0.1:6379> set k3 v3
OK
127.0.0.1:6379> shutdown
  • 4.3在目录下发现aof文件,重启后key值依然存在
[root@haproxy01 work]# ls
appendonly.aof  redis_3.140.log
127.0.0.1:6379> mget k1 k2 k3
1) "v1"
2) "v2"
3) "v3"

五.持久化读取顺序

  • 5.1 直接读取rdb
  • 5.2 rdb存在先读rdb后读aoff
  • 5.3 rdb不存在则读取aof
  • 5.4 都不存在则以空数据库启动
原文地址:https://www.cnblogs.com/jenvid/p/10184490.html