为了账号安全,请及时绑定邮箱和手机立即绑定

设置Redis中某个键的生存时间或过期时间以及过期删除策略

标签:
Redis

建议先关注、点赞、收藏后再阅读。
图片描述

在Redis中,可以通过使用EXPIRE命令或PEXPIRE命令来设置键的生存时间或过期时间。

  • 使用EXPIRE命令设置键的过期时间,单位为秒。命令格式为:
EXPIRE key seconds

例如,设置键mykey的过期时间为60秒:

EXPIRE mykey 60
  • 使用PEXPIRE命令设置键的过期时间,单位为毫秒。命令格式为:
PEXPIRE key milliseconds

例如,设置键mykey的过期时间为60000毫秒(即60秒):

PEXPIRE mykey 60000

除了上述命令,还可以通过使用SET命令结合EX参数或PX参数进行设置键的过期时间。命令格式为:

  • 使用EX参数设置键的过期时间,单位为秒。命令格式为:
SET key value EX seconds

例如,设置键mykey的值为myvalue,并且过期时间为60秒:

SET mykey myvalue EX 60
  • 使用PX参数设置键的过期时间,单位为毫秒。命令格式为:
SET key value PX milliseconds

例如,设置键mykey的值为myvalue,并且过期时间为60000毫秒(即60秒):

SET mykey myvalue PX 60000

需要注意的是,使用EXPIREPEXPIRE命令设置键的过期时间之后,键到期时会自动被删除。而使用SET命令结合EX参数或PX参数进行设置键的过期时间后,可以使用PERSIST命令来移除键的过期时间,使得键永不过期。

Redis提供了四种过期键删除策略,分别是:

  1. 定时删除策略(volatile-lru):
    Redis使用LRU算法淘汰过期键中的一部分,确保有足够的空间继续存放新的键。但是,该策略可能导致一些过期键无法被删除,从而占用一部分内存。
  2. 惰性删除策略(volatile-lfu):
    Redis使用LFU算法淘汰过期键中的一部分,该算法根据键被访问的频率决定被淘汰的优先级。这是一种相对平衡的策略,但是算法的复杂度较高,可能影响性能。
  3. 最少时间删除策略(volatile-ttl):
    Redis根据键的过期时间从近到远对键进行排序,并淘汰最近过期的一部分。这种策略保留了剩余键中的最新数据,但是复杂度较高,需要维护一个有序集合。
  4. 随机删除策略(volatile-random):
    Redis随机选择一部分过期键并对其进行删除。这种策略是一种权衡,可以在性能和内存利用率之间取得平衡。

需要注意的是,上述策略只适用于有过期时间的键(即设置了EXPIREPEXPIRE命令的键),对于没有设置过期时间的键,Redis不会对其进行删除操作。此外,当过期键策略无法删除足够多的键时,Redis会采用内存淘汰策略来释放内存空间。

Redis使用了基于定时策略和惰性删除策略来实现过期键的删除。

基于定时策略:

  • Redis会为每个设置了过期时间的键创建一个定时器,定时器会根据键的过期时间来决定何时删除这个键。
  • Redis默认每秒执行10次定时器的检查,检查是否有键过期需要删除。
  • 过期键的删除操作都在定时器回调中进行,删除操作会将过期键从数据库中立即删除,释放内存空间。

惰性删除策略:

  • Redis在每次获取或修改键值的操作时,会检查键是否过期,并在检查到过期键时删除它,并在这之后返回给客户端。
  • 这样的删除策略可以保证过期键被及时删除,但是对于很长时间未被访问的键可能会存在过期但未被删除的情况。因为只有在对键进行操作时才会检查是否过期。

删除策略对Redis性能的影响:

  • 基于定时策略的定时器会以每秒10次的频率执行,这是一个固定的开销。
  • 当过期键较多时,删除操作会占用一定的系统资源,可能会影响Redis的性能。
  • 如果使用了持久化存储,过期键的删除操作也会增加持久化的负担,影响IO性能。
  • 惰性删除策略在访问较少的键时可能导致键的过期延迟,需要等到有访问时才检查并删除过期键。

删除策略对Redis的性能影响主要体现在删除操作的开销上,同时也受到过期键数量和访问模式等因素的影响。在大多数情况下,Redis的删除策略是可以保证性能和内存使用的良好平衡的。

点击查看更多内容
1人点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
全栈工程师
手记
粉丝
1.7万
获赞与收藏
2252

关注作者,订阅最新文章

阅读免费教程

感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消