Bootstrap

Redis为 List/Set/Hash 的元素设置单独的过期时间

一.业务简介

我们知道,Redis 里面暂时没有接口给 List、Set 或者 Hash 的 field 单独设置过期时间,只能给整个列表、集合或者 Hash 设置过期时间。

这样,当 List/Set/Hash 过期时,里面的所有 field 元素就全部过期了。但这样并不满足需求。

二.结论

直接说结论:我们可以通过Hash配合Zset的数据结构,来对每一个单独的元素设置不同的过期时间

三.代码示例

通过传入对应的key值,在Redis中存入二个数据结构,一个是Hash,以hashKey作为标识的数据结构

然后在存储另外一个Zset的数据结构,以score为过期时间,value为HashKey

相当于数据库中外键的感觉

最后创建一个定时任务(或者阻塞队列的方式)定时去判断Zset的数据有没有超时,如果超时的话剔除Zset和Hash表单独的元素的数据

四.测试

通过Apipost发送请求,代码层面进行解析找到对应单独的key(唯一标识符)

插入数据到Redis成功,等待超时剔除

测试成功

;