redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中的数据同步到硬盘来保证持久化。redis持久化的两种方式,
1 、snapshotting(快照)默认方式。将内存中以快照的方式写入到二进制文件中,默认为dump.rdb.可以通过配置设置自动做快照持久化的方式。我们可以配.置redis在n秒内如果超过m个key则修改就自动致快照。
snapshotting设置:
save 900 1 #900秒内如果超过1个key被修改则发起快照保存
save 300 10 #300秒内如果超过10个key被修改则发起快照保存
save 60 10000 #60秒内如果超过10000个key被修改则发起快照保存
2 、append-only file (缩写aof)〉的方式(有点类似于oracle日志)由于快照方式是在一定时间间隔做一次,所以可能发生redis意外down的情况就会丢失最后—次快照后的所有修改的数据、aof比快照方式有更好的持久化性。是由于在使用aof时,redis会将每—个收到的写命令都通过write函数追加到命令中。当redis重新启动时会重新执行文件中保存的写命令来在内存中重建这个数据库的内容,这个文件在bin目录下.
appendonly.aof.aof不是立即写到硬盘上,可以通过配置文件修改强制写到硬盘中。
aof设置:
#appendonly yes //启动aof持久化方式有三种修改方式:
#appendfsync always //收到写命令就立即写入到磁盘,效率最慢,但是保证完全的持久化#appendfsync everysec //每秒钟写入磁盘—次,在性能和持久化方面做了很好的折中
appendfsync no //完全依赖os性能最好持久化没保证
RDB模式一般自己使用(对数据丢失无所谓的情况下)
AOF 一般使用与生产环境orcale 数据库 的undo 类似
AOF在工作中一般使用第一种always,如果使用第二种可能会丢数据,第三种完全依赖计算机性能。
在2.0版本的时候,高并发的情况下记录日志,会出现性能功能下降,所以使用redis+ssdb组合
3.0的时候使用redis集群不用考虑效率低的问题
开启AOF默认关闭RDB



