redis的持久化策略

redis的持久化和rdb持久化
1.什么是持久化?
将内存中的数据写入到磁盘。在mq课程接触了持久化。
2.redis在什么情况下执行持久化操作?
1)符合配置规则
2)执行了save,shutdown,shutdown save,restart,flushdb,flushall,kill命令后
3.rdb持久化方式
1)rdb持久化方式是redis的默认持久化方式,即redis生成一个后缀名为.rdb的文件,配置规则见SNAPSHOTTING模块。
2)配置rdb持久化频率
配置规则:save <seconds> <changes>
即每隔一段时间redis服务器程序会自动对数据库做一次遍历,把内存快照写在一个叫做“dump.rdb”的文件里,这个持久化机制叫做snapshotting。
有了snapshotting后,如果服务器宕机,重新启动redis服务器程序时redis会自动加载dump.rdb,将数据库状态恢复到上一次做snapshotting时的状态。
可以在redis的conf文件里指定持久化频率,以下满足其中一个就行:
save 900 1
save 300 10
save 60 10000
# 900秒(15分钟)内至少1个key值改变(则进行数据库保存--持久化) 
# 300秒(5分钟)内至少10个key值改变(则进行数据库保存--持久化) 
# 60秒(1分钟)内至少10000个key值改变(则进行数据库保存--持久化)
3)配置rdb持久化文件存放路径
dbfilename 6379.rdb                生成的rdb文件的名称,建议必须配置
dir /usr/local/bin                生成的rdb文件的路径,建议必须配置
如果没有配置上述项目,持久化文件dump.rdb会位于redis的启动目录,即在哪个目录下运行的redis-server就在哪个目录下生成持久化文件。
另外,如果没有配置上述项目,多个redis实例共存的情况下会覆盖前一个的数据。
4)其他配置
stop-writes-on-bgsave-error yes    持久化过程中发生错误时是否停止操作,默认值
rdbcompression yes                是否启用压缩,默认
rdbchecksum yes                    检测rdb文件,默认,在恢复数据的时候要不要进行合法性检测
5)rdb持久化的特点
每一次持久化的时候把所有数据写到硬盘上,数据量如果大的话,花费的时间会很长。
在实际应用中根据业务类型选择时间和操作,相应的去提高或者降低持久化的门槛。
例如:会员充值(增加持久化频率)、点赞浏览量统计(适当减少持久化频率)。
6)禁用
放开save ""并且注销所有save行。如果放开了save ""但是没有注销save 900 1仍然会进行持久化。
7)从什么时候开始计时?
从上一次持久化成功的时间开始计算。

AOF持久化方式
1.什么是aof
见APPEND ONLY MODE模块,aof即是Append Only File的缩写,意思是对操作进行追加,换句话说就是记录用户的所有写操作。
例如set,sadd,flushdb...都记录。time,get....这些操作不记录。只要发生写操作,它就按照规则在aof文件中进行追加,注意:是追加不是修改。
注意:并不是立马记录,得看配置规则。
2.配置aof持久化
appendonly no                    默认redis关闭了aof操作,如果打开则将值设置为yes
appendfilename "appendonly.aof"    持久化aof文件的名称,aof文件的路径见rdb配置中的dir值。
3.配置aof持久化策略
# appendfsync always            只要发生写操作就进行持久化,特点是速度慢,但是最安全
appendfsync everysec            每秒钟进行一次持久化操作,默认策略,特点是比较兼顾安全和速度,redis推荐使用。如果数据丢失的话,最多丢失1秒钟的数据。
# appendfsync no                将持久化的操作交给操作系统处理。
4.其他配置
no-appendfsync-on-rewrite no    在持久化过程中产生的新操作要不要写入,yes不写,no写。默认是no一般推荐yes.
auto-aof-rewrite-percentage 100    当文件增加的体积是原来体积的百分之多少的时候进行rewrite
auto-aof-rewrite-min-size 64mb    当文件满足最小体积是多少的时候,才进行rewrite操作
aof-load-truncated yes            在恢复数据的时候要不要进行合法性检测,如果出错就不加载。
3.如何在rdb和aof之间切换?
首先,他们是可以同时使用的,也可以单独使用。
rdb-->aof
4.rdb和aof文件修复工具
redis-check-rdb /usr/local/bin/6379.rdb
redis-check-aof /usr/local/bin/6379.aof
修复一些语法错误,例如删除一些错误的内容。
5.禁用持久化
rdb默认开启,save ""或者注销掉save 900 1, save 300 100等配置信息,注意save "" save 900 1, save 300 100都存在的话仍会进行持久化。
aof默认关闭,appendonly no即可禁用。

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值