redis的过期键与持久化

1、redis过期键与持久化

思考过期键与持久化!

1、1 对于rdb持久化

在生成 RDB 文件的过程中,如果一个键已经过期,那么其不会被保存到 RDB 文件中。

在载入 RDB 的时候,要分两种情况:

  1. 如果 Redis 以主服务器的模式运行,那么会对 RDB 中的键进行时间检查,过期的键不会被恢复到 Redis 中。
  2. 如果 Redis 以从服务器的模式运行,那么 RDB 中所有的键都会被载入,忽略时间检查。在从服务器与主服务器进行数据同步的时候,从服务器的数据会先被清空,所以载入过期键不会有问题。
  3.  
  4.  

1.2 aof持久化

对于 AOF 来说,如果一个键过期了,那么不会立刻对 AOF 文件造成影响。因为 Redis 使用的是惰性删除和定期删除,只有这个键被删除了,才会往 AOF 文件中追加一条 DEL 命令。在重写 AOF 的过程中,程序会检查数据库中的键,特别是打开了混合持久化,已经过期的键不会被保存到 AOF 文件中(其中在混合持久化文件中剔除了),你再重写后(bgrewriteaof),vim

appendonly.aof时,已经看不到有del命令了。

对于主从复制场景,主服务器和从服务器对于过期键的处理也不相同:

  1. 对于主服务器,一个过期的键被删除了后,会向从服务器发送 DEL 命令,通知从服务器删除对应的键
  2. 从服务器接收到读取一个键的命令时,即使这个键已经过期,也不会删除(不执行惰性删除),而是照常处理这个命令。
  3. 从服务器接收到主服务器的 DEL 命令后,才会删除对应的过期键(说的就是从服务器使用的是主服务器的同步策略)。

这么做的主要目的是保证数据一致性,所以当一个过期键存在于主服务器时,也必然存在于从服务器(有点绝对,只能说99.99%的有一致!极端情况同步会延时1秒,如果这1秒,从服务器宕了呢,且宕了时间超过了释放积压缓冲的配置时间: repl-backlog-ttl 呢!)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

军哥孤独枫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值