zoukankan      html  css  js  c++  java
  • python获取redis key过期的信息

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

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

    config set notify-keyspace-events Ex

    【或者启动redis前在redis.conf 添加配置:notify-keyspace-events "Ex" //过期时间监听生效】

    2、启动监听key过期

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

    PSUBSCRIBE __keyevent@*__:expired    

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

    Redis中发布与订阅只有简单的6个命令。即:

    订阅一个或者多个符合pattern格式的频道
    PSUBSCRIBE pattern [pattern ...]
    
    发布消息到chanel中
    PUBLISH channel message
    
    查看订阅与发布系统状态
    PUBSUB subcommand [argument [argument ...]]
    
    退订所有符合格式的频道
    PUNSUBSCRIBE [pattern [pattern ...]]
    
    订阅一个或者多个频道
    SUBSCRIBE channel [channel ...]
    
    取消订阅频道
    UNSUBSCRIBE [channel [channel ...]]
    --------------------

    测试:

    3、另外开启一个客户端,添加test 为key,并设置5秒过期

    setex test 5 test

    5秒后,监听窗口显示:

     pmessage

    __keyevent@*__:expired

    __keyevent@0__:expired

    test

    4.接下来上python代码

    #-*- coding:utf-8 -*-
    import time  
    from redis import StrictRedis
    
    #创建redis连接
    redis = StrictRedis(host='localhost', port=6379)
    
    #创建一个pubsub对象,该对象订阅一个频道并侦听新消息
    pubsub = redis.pubsub()  
    #pubsub.psubscribe('__keyspace@0__:*')
    
    # 发布监听key失效的订阅
    pubsub.psubscribe("__keyevent@0__:expired")
    #通过无限循环等待事件
    print('Starting message loop')  
    for data in pubsub.listen():
        print(data)

    此时我们运行python代码,然后开一个redis-cli,搞一个keysvalue 

    setex keys 5 value 

    5秒以后keys会过期

    python会打印
    {'type': 'pmessage', 'pattern': b'__keyevent@0__:expired', 'channel': b'__keyevent@0__:expired'
     'data': b'keys'}
  • 相关阅读:
    水平拖拽滚动条
    垂直拖拽滚动条
    网页特效_拖拽案例
    js实现倒计时
    权限控制
    Eclipse 项目有红感叹号
    JBPM简单介绍
    开博有感
    各种正则表达式
    Python中读取目录里的文件并按排序列出
  • 原文地址:https://www.cnblogs.com/daysn/p/11661426.html
Copyright © 2011-2022 走看看