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