Snapshot 快照 通过save或者bgsave命令通知redis做一次快照持久化。save操作是在主线程中保存快照的,由于redis是用一个主线程来处理所有客户端的请求,这种方式会阻塞所有客户端请求。所以不推荐使用。另一点需要注意的是,每次快照持久化都是将内存数据完整写入到磁盘一次,并不是增量的只同步增量数据。如果数据量大的话,写操作会比较多,必然会引起大量的磁盘IO操作,可能会严重影响性能。 在默认的快照 rdb保存方式中,redis.conf 里面的配置如下 save 900 1 #900秒内如果超过1 个key 被修改,则发起快照保存 save 300 10 #300秒内容如超过10个key 被修改,则发起快照保存 save 60 10000如果我们需要关闭快照,只需要将这几行注释了,然后重启 redis 即可。 如果是正在运行的实例,可以使用 redis-cli的命令 # 查看当前配置 config get save # 关闭快照 config set save ""来在线更新配置,输出OK表示设置成功。 AOF 比快照方式有更好的持久化性,是由于在使用aof 持久化方式时, redis 会将每一个收到的写 命令都通过write函数追加到文件中(默认是appendonly.aof) 。当redis 重启时会通过重新执行文件中 保存的写命令来在内存中重建整个数据库的内容 默认配置如下: appendonly yes //启用日志追加持久化方式 #appendfsync always //每次收到写命令就立即强制写入磁盘,最慢的,但是保证完全的持久化,不推荐使用 appendfsync everysec //每秒钟强制写入磁盘一次,在性能和持久化方面做了很好的折中,推荐 #appendfsync no //完全依赖操作系统,性能最好,持久化没保证我们需要更新配置文件为: appendfsync no在线更新配置使用 # 查看当前配置 config get appendfsync # 关闭快照 config set appendfsync no通过这两个配置,redis就可以完全在内存运行。 如果想手动进行持久化,可以使用Redis的 bgsave 和 bgrewriteaof 来手动进行持久化。 原文:http://my.oschina.net/ifeixiang/blog/363439 转载请保留固定链接: https://linuxeye.com/Linux/2055.html |