一文深度剖析Redis6的持久化机制(简洁易懂)

Redis的强劲性能很大程度上是由于它所有的数据都存储在内存中,当然如果redis重启或者服务器故障导致redis重启,所有存储在内存中的数据就会丢失。但是在某些情况下,我们希望Redis在重启后能够保证数据不会丢失。

  1. 将redis作为nosql数据库使用。

  2. 将Redis作为高效缓存服务器,缓存被击穿后对后端数据库层面的瞬时压力是特别大的,所有缓存同时失效可能会导致雪崩。

这时我们希望Redis能将数据从内存中以某种形式同步到硬盘上,使得重启后可以根据硬盘中的记录来恢复数据。

Redis支持两种方式的持久化,一种是RDB方式、另一种是AOF(append-only-file)方式,两种持久化方式可以单独使用其中一种,也可以将这两种方式结合使用。

  • RDB:根据指定的规则“定时”将内存中的数据存储在硬盘上,
  • AOF:每次执行命令后将命令本身记录下来。

RDB模式

RDB的持久化方式是通过快照(snapshotting)完成的,它是Redis默认的持久化方式,配置如下。

# save 3600 1
# save 300 100
# save 60 10000

Redis允许用户自定义快照条件,当符合快照条件时,Redis会自动执行快照操作。快照的条件可以由用户在配置文件中配置。配置格式如下

save <seconds> <changes>

第一个参数是时间窗口,第二个是键的个数,也就是说,在第一个时间参数配置范围内被更改的键的个数大于后面的changes时,即符合快照条件。当触发条件时,Redis会自动将内存中的数据生成一份副本并存储在磁盘上,

这个过程称之为“快照”,除了上述规则之外,还有以下几种方式生成快照。

  1. 根据配置规则进行自动快照
  2. 用户执行SAVE或者GBSAVE命令
  3. 执行FLUSHALL命令
  4. 执行复制(replication)时

根据配置规则进行自动快照

  • 修改redis.conf文件,表示5秒内,有一个key发生变化,就会生成rdb文件。
  save 5 1                # 表示3600s以内至少发生1个key变化(新增、修改、删除),则重写rdb文件
  save 300 100
  save 60 10000
  • 修改文件存储路径

    dir /data/program/redis/bin
    
  • 其他参数配置说明

    参数 说明
    dir rdb文件默认在启动目录下(相对路径) config get dir 获取
    dbfilename 文件名称
    rdbcompression 开启压缩可以节省存储空间,但是会消耗一些CPU的计算时间,默认开启
    rdbchecksum 使用CRC64算法来进行数据校验,但是这样做会增加大约10%的性能消耗,如果希望
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值