最近老大让看看redis中数据类型,list中单个element元素,能不能设置过期(不是针对整个list),整个list是可以直接设置过期的。网上搜结果list单个元素不支持自动过期设置

expire 列表名 时间

需求:就是把超过指定时间的列表元素数据直接删除

考虑如下折中办法

①每隔5分钟,就新建一个列表,使用过期函数把超过5分钟的list,都删掉。

②使用有序集合,来实现。(每个有序集合 的成员都关联着一个评分,这个评分用于把有序集 合中的成员按最低分到最高分排列。)思路:将score 设置成时间戳,让后通过zremrangebyscore来删除

example :

添加元素

ZADD key score member [[score member] [score member] ...]

删除元素

ZREMRANGEBYSCORE key min max

下面自己用有序集合来测试案例

##添加元素,休眠5秒钟,然后在添加数据

filename:redisadd.py#!/usr/bin/pythonimport redisimport timer = redis.StrictRedis(host='127.0.0.1', port=6379)key='myzset'#r.zadd('myzset',0,"someting without expiration")for i in range(10):    value="insert "+str(i)+" value"    r.zadd(key,time.time(),value)                                                                                               time.sleep(5)for s in "study":    r.zadd(key,time.time(),s)print r.zrange('myzset',0,-1,withscores=True)

##主要把3秒之前添加的数据删除

filename:redisdel.py#!/usr/bin/pythonimport redisimport timer = redis.StrictRedis(host='127.0.0.1', port=6379)key="myzset"r.zremrangebyscore('myzset',0,int(time.time())-3)print r.zrange(key,0,-1,withscores=True)