redis过期怎么删除的

fiy 其他 24

回复

共3条回复 我来回复
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    Redis 的过期键删除有两种方式:定期删除和惰性删除。

    1. 定期删除:Redis 默认每秒执行 10 次的定期删除操作。当执行该操作时,Redis 会随机选择一些已设置过期时间的键并检查它们是否过期,如果过期则将其删除。定期删除可以保证 Redis 中的键空间不会无限增长,但是可能会导致一些过期键仍然存在一段时间。

    2. 惰性删除:当客户端尝试访问一个键时,Redis 会先检查该键是否过期,如果过期则立即删除。这样可以保证过期键一定会被删除,但是可能会增加访问键的时延。

    下面是具体的删除过期键的过程:

    1. 客户端对某个键进行读写操作时,Redis 会先检查该键是否已设置过期时间。
    2. 如果键已过期,则 Redis 会立即删除该键并返回空值。
    3. 如果键未过期,则继续执行对该键的读写操作。

    需要注意的是,删除过期键的操作是在定期删除和惰性删除两种方式下进行的,而不是在设置过期时间时进行的。所以即使设置了过期时间,过期键仍然可能存在一段时间。如果希望在设置过期时间后立即删除过期键,可以在设置过期时间后执行一次读取操作来触发惰性删除的过程。其中,定期删除的频率可以通过 Redis 的配置参数进行调整。

    2年前 0条评论
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    Redis的过期删除是通过使用键空间通知(keyspace notification)和Redis内部的过期处理机制来实现的。当一个键过期时,Redis会自动删除该键。

    下面是关于Redis过期删除的五个要点:

    1. 过期策略:Redis使用的是惰性过期删除策略,也就是说Redis不会在键到达过期时间时立即删除它,而是在客户端对该键进行读写操作时检查并删除过期键。

    2. 定期删除:为了加速过期键的删除,Redis还使用了定期删除策略。在每个服务器事件循环(serverCron)时,Redis会随机检查一些键,并删除其中的过期键。通过使用这种策略,Redis可以避免在一瞬间删除大量过期键造成服务器性能下降。

    3. 清晰键空间通知:Redis的键空间通知机制可以实时地发送过期事件通知。当一个键过期被删除时,Redis会向订阅了__keyevent@*__:expired频道的客户端发送一个消息。通过订阅这个频道,客户端可以在过期事件发生时做出相应的处理。

    4. 内部过期处理:Redis的过期键由内部过期处理机制处理。在每次读写操作时,Redis都会检查该键是否过期。如果键过期则进行删除,如果未过期则继续进行操作。

    5. 内存回收:当过期键被删除后,Redis会将该键所占用的内存空间释放给操作系统。随着过期键的删除,Redis会不断回收内存并减少内存使用量。

    总之,Redis的过期键删除是通过惰性删除策略、定期删除策略、键空间通知机制和内部过期处理机制来实现的。这些策略和机制保证了Redis能够高效地处理过期键并释放内存空间。

    2年前 0条评论
  • 不及物动词的头像
    不及物动词
    这个人很懒,什么都没有留下~
    评论

    Redis 中的过期键 (expired keys) 是会自动删除的,当一个键的过期时间到达时,Redis 会自动将其删除。

    下面将详细讲解 Redis 过期键的删除过程,包括 Redis 基于什么原理进行过期键的删除、删除过程中涉及到的方法、操作流程等。

    1. Redis 过期键原理
      在 Redis 中,每个键(key)都会关联一个过期时间(expiration time),当设置了键的过期时间后,Redis 会在过期时间到达时自动将该键删除。过期键的删除是基于 Redis 使用的惰性删除策略:即当访问一个键时,Redis 会先检查该键是否过期,如果过期则立即删除;如果键未过期,则返回对应的值。这种方式相比于定时删除更加高效,减少了额外的CPU开销。

    2. Redis 删除过期键的操作
      要清除过期键,Redis 会在执行以下操作时进行清理:

    • 当一个键被访问时,Redis 会检查该键是否已过期。如果过期,则执行删除操作。
    • 当执行写操作 (包括 SET、DEL、EXPIRE 等) 时,Redis 会检查键是否已过期,并执行删除操作。
    1. Redis 删除过期键的流程
      当 Redis 检测到一个键已经过期时,会进行以下操作:
    • 将该过期键标记为待删除。这些待删除的键会被 Redis 放入一个专门的字典中保存。
    • 在适当的时机,Redis 会对字典中的待删除键进行删除。
      • 如果当前 Redis 客户端连接处于非阻塞的状态,Redis 会在每次执行命令时删除一部分过期键。
      • 如果当前 Redis 客户端连接处于阻塞的状态 (如等待数据返回),Redis 则会在数据返回之前删除过期键。
    1. 主动删除过期键
      此外,Redis 还提供了一些主动删除过期键的操作,方便用户在需要时手动删除过期键。
    • DEL key: 删除指定的键。
    • EXPIRE key seconds: 设置键的过期时间。
    • PERSIST key: 删除键的过期时间。

    以上就是 Redis 过期键的删除过程。通过懒删除策略,Redis 可以高效地删除过期键,确保存储管理的高效和内存的合理利用。

    2年前 0条评论
注册PingCode 在线客服
站长微信
站长微信
电话联系

400-800-1024

工作日9:30-21:00在线

分享本页
返回顶部