如何使用缓存实现24小时抽奖记录存储?

使用缓存实现一个功能,存储当前时间前24小时的抽奖奖励记录,有以下要求:

  1. 奖励记录条数5条;
  2. 每条记录最长过期时间24h;
  3. 若有新的满足条件的奖励记录,且记录条数小于5条,则删除最早的奖励记录,插入该条奖励记录。
  4. 奖励记录需要一次性查出来;
    大佬们有什么比较好的解决思路吗?或者又遇到这类问题么?

我的思路:
把所有抽奖记录ID存储在一个set或者list中,这样可以一次性获取到所有的抽奖记录。
每条抽奖记录作为一个独立的键值对存储在redis中,并设置对应的过期时间。这种设计在插入数据比较麻烦。
请问这类问题是否存在现有解决方案?

阅读 1.1k
2 个回答

不太清楚你的奖励记录怎么来的,不过你可以看看这个方向能不能帮到你,你可以把抽奖记录都用zset 进行存储,分数为抽奖的时间,当每次获取这个zset数据的时候,就利用分数把超过24小时的分数都剔除,这样不就实现了

一个用户就这么五条记录,没必要"每条抽奖记录作为一个独立的键值对存储在redis中",一个用户存一个键值就行了,存hash或者json都行,每次把内容读出来做相应逻辑处理,这么点东西真没必要非得用上什么redis的特性来做

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题