redis的持久化有rdb和aof两种:
rdb是记录一段时间内的操作,一般的配置是一段时间内操作超过多少次就持久化。
aof可以实现每次操作都持久化。
这里我们使用aof:
配置方式:
1. 打开redis的配置文件。找到appendonly,改成appendonly yes。(默认是no)
2. 再找到appendfsync
#appendfsync always #每次收到写命令就立即强制写入磁盘,最慢的,但是保证完全的持久化,不推荐使用
appendfsync everysec #每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中(推荐 )
#appendfsync no #完全依赖os,性能最好,持久化没保证
默认每秒持久化满足我的需求。
其实改下appendonly 为yes就ok了。
appendfsync no:
Redis不会主动调用fsync,由操作系统决定何时将缓冲区内容写回磁盘。
appendfsync everysec:
当设置appendfsync为everysec的时候,Redis会默认每隔一秒进行一次fsync调用时长超过1秒时。Redis会采取延迟fsync,这一次的fsync时文件描述符会被阻塞,所以当前的写操作就会阻塞。
结论就是,在绝大多数情况下,Redis会每隔一秒进行一 次fsync操作。这一操作在大多数数据库系统中被称为group commit,就是组合多次写操作的数据,一次性将日志写到磁盘。
appendfsync always:
置appendfsync为always时,每一次写操作都会调用一次fsync,所以其性能也会受到影响。