栏目分类:
子分类:
返回
终身学习网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
终身学习网 > IT > 软件开发 > 后端开发 > Python

Redis key过期事件的监听

Python 更新时间:发布时间: 百科书网 趣学号

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

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

config set notify-keyspace-events Ex

或者在redis.conf 添加配置:

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

或者通过代码设置:

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

配置详解:

字符发送通知
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    

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

Python代码示例

from redis import StrictRedisimport requestsimport sysimport loggingimport logging.handlerslogger = logging.getLogger('mylogger')logger.setLevel(logging.WARNING)# handler 输出到控制台ch = logging.StreamHandler()ch.setLevel(logging.WARNING)logger.addHandler(ch)# redistry:    # 开启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)
转载请注明:文章转载自 www.051e.com
本文地址:http://www.051e.com/it/268514.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 ©2023-2025 051e.com

ICP备案号:京ICP备12030808号