使用缓存实现一个功能,存储当前时间前24小时的抽奖奖励记录,有以下要求:
- 奖励记录条数5条;
- 每条记录最长过期时间24h;
- 若有新的满足条件的奖励记录,且记录条数小于5条,则删除最早的奖励记录,插入该条奖励记录。
- 奖励记录需要一次性查出来;
大佬们有什么比较好的解决思路吗?或者又遇到这类问题么?
我的思路:
把所有抽奖记录ID存储在一个set或者list中,这样可以一次性获取到所有的抽奖记录。
每条抽奖记录作为一个独立的键值对存储在redis中,并设置对应的过期时间。这种设计在插入数据比较麻烦。
请问这类问题是否存在现有解决方案?
不太清楚你的奖励记录怎么来的,不过你可以看看这个方向能不能帮到你,你可以把抽奖记录都用zset 进行存储,分数为抽奖的时间,当每次获取这个zset数据的时候,就利用分数把超过24小时的分数都剔除,这样不就实现了