redis删除key会触发什么事件

fiy 其他 40

回复

共3条回复 我来回复
  • fiy的头像
    fiy
    Worktile&PingCode市场小伙伴
    评论

    Redis删除Key会触发以下事件:

    1. DEL事件:当使用DEL命令删除一个Key时,redis会触发DEL事件。DEL事件会在Key被成功删除后触发,可以通过Redis的配置文件中的notify-keyspace-events选项来开启对DEL事件的监听。

    2. EXPIRE事件:当一个Key设置了过期时间,并且该Key被删除时,会触发EXPIRE事件。EXPIRE事件会在Key被成功删除后触发,可以通过配置文件中的notify-keyspace-events选项来开启对EXPIRE事件的监听。

    3. LFU事件:当使用LFU(Least Frequently Used)算法来回收Key空间时,如果一个Key被删除,则会触发LFU事件。LFU事件会在Key被成功删除后触发,可以通过配置文件中的notify-keyspace-events选项来开启对LFU事件的监听。

    4. LRU事件:当使用LRU(Least Recently Used)算法来回收Key空间时,如果一个Key被删除,则会触发LRU事件。LRU事件会在Key被成功删除后触发,可以通过配置文件中的notify-keyspace-events选项来开启对LRU事件的监听。

    5. PERSIST事件:当一个带过期时间的Key被手动移除其过期时间时,会触发PERSIST事件。PERSIST事件会在Key被成功删除后触发,可以通过配置文件中的notify-keyspace-events选项来开启对PERSIST事件的监听。

    需要注意的是,以上事件都是在Key被成功删除后触发的,如果删除一个不存在的Key,将不会触发任何事件。另外,监听事件需要在Redis的配置文件中进行相应的配置才能生效。

    1年前 0条评论
  • worktile的头像
    worktile
    Worktile官方账号
    评论

    在Redis中,删除键(key)时会触发以下几个事件:

    1. DEL事件:当使用DEL命令显式删除一个或多个键时,将触发DEL事件。DEL事件会在键被删除之前被调度,可以使用Redis提供的钩子(hook)机制来监听DEL事件。

    2. EXPIRED事件:当某个键的过期时间到达,并被Redis自动删除时,将触发EXPIRED事件。Redis会通过内部的定时器监测过期键,并在过期键被删除之前触发EXPIRED事件。同样,可以使用钩子机制来监听EXPIRED事件。

    3. EVICTED事件:当Redis的内存超出设定的最大内存限制,需要删除一些键以释放内存时,将触发EVICTED事件。Redis使用LRU(最近最少使用)算法来选择要删除的键,当一个键被选中删除时,将触发EVICTED事件。同样,可以使用钩子机制来监听EVICTED事件。

    4. RDB删除事件:当使用Redis的持久化机制进行数据备份时,如果某个键被RDB持久化文件中删除了,将会触发RDB删除事件。这通常发生在进行全量备份或者增量备份时。

    5. AOF删除事件:当使用Redis的AOF(Append Only File)持久化机制进行数据备份时,如果某个键在AOF文件中被删除了,将会触发AOF删除事件。这通常发生在进行全量备份或者AOF文件重写时。

    这些事件的触发可通过设置Redis的配置文件或者使用API来监听。通过监听这些事件,可以进行一些自定义的操作,比如记录日志、发送通知等。

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

    在 Redis 中删除键所触发的事件主要有两种情况:删除单个键和批量删除多个键。下面将分别介绍这两种情况下删除键所触发的事件。

    一、删除单个键

    1. 发送 DEL 命令
      当通过 DEL 命令删除单个键时,Redis 会立即执行删除操作,并且不会触发任何事件。

    2. 使用 EXPIRE 设置键的 TTL 为 0
      另一种删除单个键的方式是通过设置键的 TTL 为 0 来实现,这样 Redis 会在下一次定期删除过期键的任务执行时,将该键删除。在这种情况下,Redis 会触发以下两个事件:

      • 过期事件(expired):在键被删除之前,Redis 会判断该键是否已经过期,如果已经过期,则会触发该事件。
      • 取消过期事件(expired_cancel):如果在键被删除之前,键的 TTL 被更新为非 0 的值,那么 Redis 会取消该键的过期操作,并触发该事件。

    二、批量删除多个键

    批量删除多个键可以通过多种方式实现,主要有以下两种方式:

    1. 使用 DEL 命令一次性删除多个键
      当使用 DEL 命令一次性删除多个键时,Redis 会依次删除这些键,并且不会触发任何事件。

    2. 使用 KEYS/SCAN + DEL 命令批量删除键
      另一种批量删除多个键的方式是使用 KEYS 或者 SCAN 命令获取要删除的键的列表,然后使用 DEL 命令逐个删除这些键。在这种情况下,Redis 会对每个被删除的键触发以下两个事件:

      • 到期事件(evicted):在键被删除之前,Redis 会判断该键是否已经过期,如果已经过期,则会触发该事件。
      • 删除事件(del):在删除键之后,Redis 会触发该事件。

    需要注意的是,批量删除多个键可能会产生大量的阻塞,对 Redis 的性能产生影响,因此在处理大量键的情况下,最好通过管道(pipeline)或者 Lua 脚本来进行批量删除操作,以提高删除效率。

    综上所述,Redis 在删除单个键或者批量删除多个键时,会触发不同的事件,开发人员可以通过监听这些事件来实现一些特定的业务逻辑。

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

400-800-1024

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

分享本页
返回顶部