Redis数据持久化
Redis是一种非关系型数据库,它将数据存储在内存中,为了保证数据的持久性,需要将数据持久化到磁盘上,Redis提供了两种持久化方式:RDB和AOF。
RDB持久化
概念
RDB(Redis DataBase)持久化是将某个时间点上的所有数据都写入一个非常紧凑的二进制文件中,例如默认的dump.rdb文件,这是一个非常优秀的灾难恢复解决方案,你可以将RDB文件复制到另一个地方,当需要的时候,可以将其导入到Redis中去。
配置
可以通过修改配置文件redis.conf来开启RDB持久化功能。
900秒后会生成一次RDB快照,以下为注释掉的配置项 save 900 1 save 300 10 save 60 10000
上述配置表示在900秒(15分钟)之后,如果至少有1个key发生变化则执行一次快照。
触发方式
手动触发:使用SAVE或者BGSAVE命令,SAVE命令会阻塞Redis服务器进程,直到RDB文件创建完毕为止,对于大型数据库来说,这段时间可能很长;而BGSAVE命令则会派生出一个子进程来创建RDB文件,父进程继续处理客户端请求,新的改动会被保存到aof_buf中,当子进程完成快照时,再把aof_buf中的改动写入到RDB文件中。
自动触发:在规定时间内,如果超过指定的key被修改,则自动触发BGSAVE。
AOF持久化
概念
AOF(Append Only File)持久化以日志的形式记录服务器接收到的每一个写操作,这些记录将以Redis协议追加保存到AOF文件的末尾,Redis还能对AOF文件进行后台重写,使得AOF文件的大小不至于超过实际需要。
配置
可以通过修改配置文件redis.conf来开启AOF持久化功能。
appendonly yes # 开启AOF持久化 appendfsync everysec # 每个second刷一次AOF,保证数据安全性
重写机制
AOF重写机制可以减小AOF文件的大小,当AOF文件大小比给定值大或者给定时间内AOF体积超过了给定值,就会自动触发rewrite,重写过程中,会把所有修改过的指令以Redis协议的形式写入到一个新的AOF文件中,新的文件体积会比旧文件小很多。
触发方式
手动触发:使用BGREWRITEAOF命令。
自动触发:根据autoaofrewritepercentage和autoaofrewriteminsize参数控制自动触发。
归纳
以上是Redis数据持久化的两种方式,可以根据不同的应用场景选择不同的持久化方式,也可以同时使用两种方式来提高数据的安全性。
原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/658084.html
本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。
发表回复