Posted on:
Last modified:
我们知道在 redis 中可以给每个 key 设置过期时间(TTL),但是没法为每个集合中的每一个元素 设置过期时间,可以使用 zset 来实现这个效果。
直接上代码吧,Python 版的。
from redis import Redis
class RedisSet:
def __init__(self, key, client: Redis):
self.client = client
self.key = key
def add(self, val, ttl=60):
now = time.time()
# 把过期时间作为 score 添加到 zset 中
self.client.zadd(self.key, now + ttl, val)
# 删除已经过期的元素
self.client.zremrangebyscore(self, now, "+inf")
def getall(self):
# 只读取还没有过期的元素
return self.client.zrangebyscore(self.key, "-inf", time.time())
© 2016-2022 Yifei Kong. Powered by ynotes
All contents are under the CC-BY-NC-SA license, if not otherwise specified.
Opinions expressed here are solely my own and do not express the views or opinions of my employer.
友情链接: MySQL 教程站