监控Redis过期Key的变化(redis过期监听)

  Redis几乎在所有的Web系统中有很重要的存在,它的易用性和速度是受到非常多人用来代替传统关系型数据库的加速技术,它也有一种独特的特性,这就是支持Key-value下面是可以支持定时任务,也就是可以设置一个key,当这个key过期以后,则可以完成一定的程序,具体来说,就是需要监控Redis的key过期的情况,当key过期的时候,这里可以添加一些业务的处理方式,此时可以使用Redis的keyspace notifications 功能,确实也提供了部分方式,可以增强Redis的使用,首先要开启Redis的keyspace notifications 功能,-notify-keyspace-events,可以在启动的时候添加,或者是在redis.conf中设置,这里建议设置为Exg,即包括数据库切换,key过期,key空闲,或者是key被删除等等行为,经过设置以后,就可以监听到全部相关的行为,然后就可以进行某些业务处理。可以使用一段python 脚本:

“`python

import redis, time

r = redis.StrictRedis(host=’localhost’, port=6379, db=0)

ps = r.pubsub()

ps.psubscribe(‘__keyevent@0__:expired’)

for item in ps.listen():

if item[‘type’] == ‘pmessage’:

key = item[‘data’]

# do something with the expired key


  上面的这段脚本可以使用redis的publish&subscribe的功能,来监听到是哪个的key过期的状态,这个脚本每隔一段时间就会检查一次,这样就可以确认key是否过期,另外需要注意的是,这段脚本只监听那些被设置过期的key,而不会提供key被删除,更新,或者是key被重新设置TTL的情况,所以在这种情况下,首先要让开发者可以掌握redis里key的变动情况,以免造成不必要的麻烦。

数据运维技术 » 监控Redis过期Key的变化(redis过期监听)