首先,此文章是接了如下文章写的

Spring boot redis自增编号控制 踩坑

上面这个问题解决后,公司这边功能其实已经实现了,但是考虑到一种情况,因为我们这边号的生成就是根据上面的自增编号来的,而redis里的自增编号是可以设置过期时间的,我这边设置的过期时间是根据客户的营业时间来换算获取的,

而当中碰到一个问题,因为考虑到客户营业时间是由客户自己维护的,所以不得不考虑当他们在同一天里面,刚开始设置的是一个上午的,后来在过期时间已经到了,redis中的计时器已经被自动清除的情况下,所以我这边再做一个计数器,

但是它的期限是无限期。当有限计时器过期导致这边数据找不到的时候,则从无限计时器去过来数据,并把它的值作为增量保存回到有限计时器中。而当中碰到一个问题:

代码1:

 1 /**
 2      * 读取缓存
 3      *
 4      * @param key
 5      * @return
 6      */
 7     public Object get(final String key) {
 8         Object result = null;
 9         ValueOperations<Serializable, Object> operations = redisTemplate.opsForValue();
10         result = operations.get(key);
11         return result;
12     }

代码2:

 1 /**
 2      * redis 自增
 3      * @param key
 4      * @param liveTime 毫秒数 这个计数器的有效存留时间
 5      * @param delta 自增量
 6      * @return
 7      */
 8     public Long incr(String key, long liveTime, long delta) {
 9         RedisAtomicLong entityIdCounter = new RedisAtomicLong(key, redisTemplate.getConnectionFactory());
10         Long increment = entityIdCounter.addAndGet(delta);
11
12         if ((null == increment || increment.longValue() == 0) && liveTime > 0) {//初始设置过期时间
13             entityIdCounter.expire(liveTime, TimeUnit.MILLISECONDS);
14         }
15
16         return increment;
17     }

我通过代码1,去获取代码2生成的数据,结果发现不管怎么获取,都是null

必须要使用如下代码才能获取到值,尴尬呀!!!

RedisAtomicLong entityIdCounter = new RedisAtomicLong(key, redisTemplate.getConnectionFactory());
entityIdCounter.get();

转载于:https://www.cnblogs.com/Grace-is-enough/p/9235534.html

redis读取自增时候指定的key问题相关推荐

  1. redis集群批量删除指定的key

    工作中遇到一个问题,redis中存储了大量的key,而且没有设置时效,其中很大一部分后来都没用了,导致redis体积庞大,查询缓慢.服务器版本为windows,网上搜索到很多批量删除的方法都是Linu ...

  2. redis批量删除指定的key

    批量删除Key Redis 中有删除单个 Key 的指令 DEL,可以借助 Linux 的 xargs 指令来完成这个动作 [plain] view plain copy redis-cli keys ...

  3. 使用Redis删除指定前缀Key

    遇到一个问题就是删除缓存,有的键是这样的方式进行存储的 我们能发现,它们都是有特定的前缀的,如果我们需要根据指定前缀删除的话,因为redis没有提供根据前缀来删除key的方法 但是提供了另外一个方法, ...

  4. 在线博客系统——文章详情(redis incr自增实现增加阅读数和评论数)

    目录 文章详情 接口说明 编码实现 Controller控制层 Service业务逻辑层 前端测试 redis incr自增实现浏览量 Redis配置类 Redis工具类 Dao持久层准备 Mappe ...

  5. Redis入门完整教程:寻找热点key

    热门新闻事件或商品通常会给系统带来巨大的流量,对存储这类信息的 Redis来说却是一个巨大的挑战.以Redis Cluster为例,它会造成整体流量的 不均衡,个别节点出现OPS过大的情况,极端情况下 ...

  6. 【带你重拾Redis】Redis过期策略 和 内存淘汰策略(key回收)

    过期策略 我们set key的时候,都可以给一个expire time,就是过期时间,指定这个key比如说只能存活1个小时,我们自己可以指定缓存到期就失效. 如果假设你设置一个一批key只能存活1个小 ...

  7. php redis key,redis 在 php 中的应用(key篇)

    KEY(键) Redis DEL 命令用于删除已存在的键.不存在的 key 会被忽略. $redis = new redis(); $redis->connect('127.0.0.1',637 ...

  8. redis.exceptions.ResponseError: WRONGTYPE Operation against a key holding the wrong kind of value

    完整报错如下: (Python3.6) appleyuchi@ubuntu19:有序集合$ python example_of_range.py  Traceback (most recent cal ...

  9. springBoot使用redis获取自增序号

    获取自增序号 springBoot使用redis获取自增序号 pom文件 参考代码 配置 配置类代码 使用代码 lua脚本 测试代码 配置 配置类代码 使用代码 lua脚本 lua脚本2 输出 另一种 ...

最新文章

  1. 新360自媒体:北京时间自媒体平台即将上线!
  2. linux usr g 空间不足,centos 磁盘空间不足
  3. Android开发工具之Android Studio--如何打包sdk通过arr包的方式
  4. CentOS 和 Linux的关系?
  5. 数学 —— 计算几何 —— 平面分割问题
  6. 【Spark】Spark TimeSort 排序
  7. eclipse项目里javascript总是验证,且出现最多的error是 Description Resource Path Location Type Syntax error on toke
  8. git 解决ahead behind分叉以及删除远端commit
  9. ruby操作常用数据库 - 使用DBI[翻译 转帖]
  10. 安卓运行linux命令mux,都能看懂的嵌入式linux/android alsa_aplay alsa_amixer命令行用法...
  11. 【信息系统项目管理师】第四章 项目整体管理(考点汇总篇)
  12. 用matlab绘制挠度图,如何绘制载荷挠度曲线图
  13. 计算机电子贺卡制作圣诞节,如何制作电子圣诞贺卡?贺卡制作步骤
  14. openGL之API学习(七十八)SPIR-V
  15. 相对路径./ ../ /解释
  16. 海上风电场对雷达性能的影响——绕射损耗
  17. Android 调整进程的最大fd 数目
  18. 【每日一练】19—CSS 实现撕纸的效果
  19. NoClassDefFoundError解决方案
  20. 简约清新水墨工作汇报PPT模板

热门文章

  1. Windows 7安全补丁KB3110329遭遇更新失败 且暂无解决方法
  2. 中间件业务在网易轻舟容器平台的性能调优实践
  3. Spring杂谈 | 什么是ObjectFactory?什么是ObjectProvider?
  4. 蚂蚁金服对研发高要求的领域建模能力是指什么?
  5. Spring Boot 使用 AOP 防止重复提交
  6. 老大难的空指针,如何优雅处理?
  7. JS校验金额格式的正则表达式
  8. 【报错】No match for argument: mysql-community-server Error: Unable to find a match: mysql-community-s
  9. access 战地1不加入ea_战地1正式加入origin access
  10. python和表格关系_数据表之多表关联