redis提供了两种持久化机制,分表是RDB和AOF。
RDB采用的是定时全量持久化机制,服务器宕机之后可能会丢失部分数据。
redis默认开启了RDB存储机制。
redis.conf中设置RDB部分的
关闭rdb的的方法 将 save “” 的注释打开
除非有特殊的情况,否则redis默认按照下面三种方式方式对数据进行持久化
1. save 3600 1 , 3600秒之后并且至少有1个key发生改变
2. save 300 100 , 300秒之后并且至少有100个key发生改变
3. save 60 10000 60秒之后至少10000个key发生改变
如果我们需要改变策略的话,只需要将下图的save部分注释打开,修改对应的策略即可
RDB机制存在的问题:
rdb需要满足策略时间和键改变两个条件才可以出发全量备份,假如我们200秒内改变了100个key,由于并没有到达指定的备份时间,并不会触发备份,但服务在249秒发生的宕机,那么这100个key就会丢失
要解决RDB方式的不在,可以使用AOF持久化机制(建议生产环境使用AOF)。
AOF是基于数据日志操作实现的持久化,是增量同步方案。
在redis中开启AOF持久化机制
将appendonly no 改为 yes,同步方式选择everysec 每秒同步一次
在Redis的配置文件中存在三种同步方式,它们分别是:
appendfsync always #每次有数据修改发生时都会写入AOF文件,能够保证数据不丢失,但是效率非常低。
appendfsync everysec #每秒钟同步一次,可能会丢失1s内的数据,但是效率非常高。
appendfsync no #从不同步。高效但是数据不会被持久化。
建议最好还是使用everysec 既能够保证数据的同步也能保证效率(everysec 最多会丢失一秒的数据)