当前位置: 首页 > 知识库问答 >
问题:

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

祁默
2024-01-13

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

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

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

共有2个答案

龚彬
2024-01-13

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

寇坚成
2024-01-13

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

 类似资料:
  • 本文向大家介绍SpringBoot使用Redis缓存的实现方法,包括了SpringBoot使用Redis缓存的实现方法的使用技巧和注意事项,需要的朋友参考一下 (1)pom.xml引入jar包,如下:   (2)修改项目启动类,增加注解@EnableCaching,开启缓存功能,如下:   (3)application.properties中配置Redis连接信息,如下:   (4)新建Redis

  • 本文向大家介绍python实现抽奖小程序,包括了python实现抽奖小程序的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了python实现抽奖小程序的具体代码,供大家参考,具体内容如下 设计一个抽奖服务  背景:有x个奖品,要求在y天内发完;每天至少发放z个奖品;每天抽奖人数不定,事先会假设一个范围是m-n 举例:有100个奖品,要求5天内发完,每天至少发15个奖品;每天来抽奖的人估

  • 1. 前言 在MyBatis 缓存一节中,我们介绍了 MyBatis 的多级缓存。MyBatis 的二级缓存可在多个会话中共享缓存,但是这也加大了内存的使用空间,如果二级缓存空间占有量过多势必会导致程序运行空间的不足,因此我们需要将二级缓存转移到专业的缓存服务器上。 Redis 是一个高性能的 kv 数据库,被广泛的使用在缓存服务上,MyBatis 项目开发者提供了 Redis 缓存的实现。本小节

  • 问题内容: 最少使用(LFU)是一种高速缓存算法,用于管理计算机内的内存。此方法的标准特性涉及系统跟踪内存中块被引用的次数。当缓存已满且需要更多空间时,系统将以最低参考频率清除项目。 例如,用Java来实现最近使用的对象缓存的最佳方法是什么? 我已经使用LinkedHashMap实现了一个(通过保持访问对象的次数),但是我很好奇是否有任何新的并发集合会更好。 考虑这种情况:假设缓存已满,我们需要为

  • 本文向大家介绍小程序实现抽奖动画,包括了小程序实现抽奖动画的使用技巧和注意事项,需要的朋友参考一下 本文实例为大家分享了小程序实现抽奖动画展示的具体代码,供大家参考,具体内容如下 所有的抽奖都是由后台计算后得到的,前台只做动画展示 js: css: 想要学习更多关于抽奖功能的实现,请参考此专题:抽奖功能 以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持呐喊教程。

  • 本文向大家介绍spring结合redis如何实现数据的缓存,包括了spring结合redis如何实现数据的缓存的使用技巧和注意事项,需要的朋友参考一下 1、实现目标   通过redis缓存数据。(目的不是加快查询的速度,而是减少数据库的负担)   2、所需jar包     注意:jdies和commons-pool两个jar的版本是有对应关系的,注意引入jar包是要配对使用,否则将会报错。因为co