当前位置:   article > 正文

Redis key过期事件的监听_redis过期监听是否可以根据某种规则监听,或者只监听一个key

redis过期监听是否可以根据某种规则监听,或者只监听一个key

使用redis key 过期通知,需开启key过期通知功能:

登录进入redis-cli客户端,执行:

config set notify-keyspace-events Ex
  • 1

或者在redis.conf 添加配置:

notify-keyspace-events "Ex" //过期时间监听生效
  • 1

或者通过代码设置:

    # 连接redis库1
    redisCli1 = StrictRedis(db=1, decode_responses=True)
    # 开启key过期通知功能
    redisCli1.config_set("notify-keyspace-events", "Ex")
    # 清空库
    redisCli1.flushdb()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

配置详解:

字符发送通知
K键空间通知,所有通知以 keyspace@ 为前缀,针对Key
E键事件通知,所有通知以 keyevent@ 为前缀,针对event
gDEL 、 EXPIRE 、 RENAME 等类型无关的通用命令的通知
$字符串命令的通知
l列表命令的通知
s集合命令的通知
h哈希命令的通知
z有序集合命令的通知
x过期事件:每当有过期键被删除时发送
e驱逐(evict)事件:每当有键因为 maxmemory 政策而被删除时发送
A参数 g$lshzxe 的别名,相当于是All

启动监听key过期

登录进入redis-cli 客户端,执行:( 订阅一个或者多个符合pattern格式的频道)

# 进入1库
redis-cli -n 1--raw
# 订阅过期事件,*代表所有库
PSUBSCRIBE __keyevent@*__:expired    
  • 1
  • 2
  • 3
  • 4

然后该客户端处于监听状态,如果有key过期,则列出:

在这里插入图片描述

Python代码示例

from redis import StrictRedis
import requests
import sys
import logging
import logging.handlers

logger = logging.getLogger('mylogger')
logger.setLevel(logging.WARNING)

# handler 输出到控制台
ch = logging.StreamHandler()
ch.setLevel(logging.WARNING)
logger.addHandler(ch)

# redis
try:
    # 开启key过期通知功能
    redisCli1 = StrictRedis(db=1, decode_responses=True)
    redisCli1.config_set("notify-keyspace-events", "Ex")
    redisCli1.flushdb()
except:
    logging.error("redis服务未启动!")
    sys.exit(0)

# 对库1 进行监听
pubsub = redisCli1.pubsub()
# 发布监听key失效的订阅
pubsub.psubscribe("__keyevent@1__:expired")
# 通过无限循环等待事件
logger.info('Starting message loop')
for data in pubsub.listen():
    key = data.get("data")
    if key != 1:
        logger.warning("过期key是: %s", key)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/685121
推荐阅读
相关标签
  

闽ICP备14008679号