美文网首页
redis 持久化性能对比

redis 持久化性能对比

作者: 一个小废材 | 来源:发表于2020-06-10 19:43 被阅读0次

    机器环境:
    redis服务器,6c16G的普通pc,cpu是i5 8400。
    redis服务本身没有做特别优化,版本为:5.0.3。

    首先对比不同持久化方案对读写性能的影响:
    1·快照 rdb
    rdb 是将当前redis库中的数据快照保存到日志中。重启时,直接恢复日志中的数据快照;
    rdb快照保存,可以通过手动也可以通过自动。手动是调用save函数或者bgsave函数,save函数是同步命令,bgsave是异步命令;bgsave执行时,redis主进程会fork一个子进程来完成快照保存
    rdb 可以设置快照保存时机

    2·aof
    aof是将用户输入的命令全部记录到日志中。重启时,通过重放日志中的命令来实现数据恢复
    aof 有三种模式,对应三种保存时机

    客户端持续10W次的读写。

    策略 子选项 耗时
    aof 每秒持久化一次(appendfsync everysec) 109.50019216537 s
    aof 每次有新命令就持久化(appendfsync always) 6822.3529829979 s
    aof 不主动持久化,( appendfsync no) 101.27058696747s
    rdb save 900 1; save 300 10; save 60 10000 102.0494949817s

    启动恢复时长:
    aof因为是记录的操作命令,所以即使redis库中数据全部删除,aof的日志文件依旧不会变小,这也就导致了aof策略下,恢复redis的时长会越来越长。
    rdb因为是数据库快照,所以不会受历史影响,恢复速度理论上会更快;但是rdb的持久化策略可能会丢数据。
    redis 4.0 之后,推出混合持久化模式。aof在持久化的时候,不是直接将内存中的数据转换为命令保存。而是保存当前时间节点的内存快照以及之后的增量命令。
    这样,在恢复的时候,先从日志恢复内存快照,然后再重放增量命令,以达到快速恢复的能力。

    数据量 策略 启动耗时
    110W(33m日志文件) rdb 0.0208s
    110W(33M日志文件) aof 0.0207s

    相关文章

      网友评论

          本文标题:redis 持久化性能对比

          本文链接:https://www.haomeiwen.com/subject/wwzptktx.html