redis的持久化
redis是将数据保存在内存当中的,当服务器关闭时,内存中数据就会丢掉,所以为了保存数据在下一次启动的时候还存在,所以就有了持久化的产生.
方案1:
RDB:基于快照机制的持久化方案,保存程序的某一时刻,一般只有几kb.
优点:文件小,适合灾难恢复.
缺点:会存在数据丢失的风险.
方案2:
AOF基于日志机制持久化的方案,会将用户所有命令保存在一个文件夹中,但是一般文件很大
优点:数据丢失风险小
缺点:不适合灾难恢复
-
RDB:redis默认开启的一种持久化的机制
save 900 1 : 在900秒之内, 如果有一个数据发生了改变, 就会执行一次保存
save 300 10 : 在300秒之内, 如果有10个数据发生了改变, 就会执行一次保存
save 60 10000 : 在60秒之内, 如果有10000个数据发生了改变, 就会执行一次保存满足那个条件, 就执行那个操作:
-
AOF: redis默认是不开启的
appendonly yes : 是否打开AOF机制 : yes打开 no 不打开
appendfsync everysec : 取值[always everysec no] -
always : 总是,只要有新操作命令执行, 就会将其保存到本地磁盘上
- 优点: 数据基本不会丢失
- 缺点: 大大的降低redis的性能
-
everysec: 每秒钟执行一次保存操作
- 优点: 对redis的性能影响较小
- 缺点: 数据会发生丢失(1/s)
-
no: redis不会主动的去保存数据, 保存的操作交给操作系统(20/min)
- 缺点: 丢失20分钟的数据
redis是一个非常稳定数据库, 一般情况下是不会发送宕机的,除非内存爆满了
实际使用中:
一般来说大公司是使用RDB来持久化数据 中小型公司使用AOF 或者 AOF+RDB