redis读取自增时候指定的key问题
首先,此文章是接了如下文章写的
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问题相关推荐
- redis集群批量删除指定的key
工作中遇到一个问题,redis中存储了大量的key,而且没有设置时效,其中很大一部分后来都没用了,导致redis体积庞大,查询缓慢.服务器版本为windows,网上搜索到很多批量删除的方法都是Linu ...
- redis批量删除指定的key
批量删除Key Redis 中有删除单个 Key 的指令 DEL,可以借助 Linux 的 xargs 指令来完成这个动作 [plain] view plain copy redis-cli keys ...
- 使用Redis删除指定前缀Key
遇到一个问题就是删除缓存,有的键是这样的方式进行存储的 我们能发现,它们都是有特定的前缀的,如果我们需要根据指定前缀删除的话,因为redis没有提供根据前缀来删除key的方法 但是提供了另外一个方法, ...
- 在线博客系统——文章详情(redis incr自增实现增加阅读数和评论数)
目录 文章详情 接口说明 编码实现 Controller控制层 Service业务逻辑层 前端测试 redis incr自增实现浏览量 Redis配置类 Redis工具类 Dao持久层准备 Mappe ...
- Redis入门完整教程:寻找热点key
热门新闻事件或商品通常会给系统带来巨大的流量,对存储这类信息的 Redis来说却是一个巨大的挑战.以Redis Cluster为例,它会造成整体流量的 不均衡,个别节点出现OPS过大的情况,极端情况下 ...
- 【带你重拾Redis】Redis过期策略 和 内存淘汰策略(key回收)
过期策略 我们set key的时候,都可以给一个expire time,就是过期时间,指定这个key比如说只能存活1个小时,我们自己可以指定缓存到期就失效. 如果假设你设置一个一批key只能存活1个小 ...
- php redis key,redis 在 php 中的应用(key篇)
KEY(键) Redis DEL 命令用于删除已存在的键.不存在的 key 会被忽略. $redis = new redis(); $redis->connect('127.0.0.1',637 ...
- 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 ...
- springBoot使用redis获取自增序号
获取自增序号 springBoot使用redis获取自增序号 pom文件 参考代码 配置 配置类代码 使用代码 lua脚本 测试代码 配置 配置类代码 使用代码 lua脚本 lua脚本2 输出 另一种 ...
最新文章
- 新360自媒体:北京时间自媒体平台即将上线!
- linux usr g 空间不足,centos 磁盘空间不足
- Android开发工具之Android Studio--如何打包sdk通过arr包的方式
- CentOS 和 Linux的关系?
- 数学 —— 计算几何 —— 平面分割问题
- 【Spark】Spark TimeSort 排序
- eclipse项目里javascript总是验证,且出现最多的error是 Description Resource Path Location Type Syntax error on toke
- git 解决ahead behind分叉以及删除远端commit
- ruby操作常用数据库 - 使用DBI[翻译 转帖]
- 安卓运行linux命令mux,都能看懂的嵌入式linux/android alsa_aplay alsa_amixer命令行用法...
- 【信息系统项目管理师】第四章 项目整体管理(考点汇总篇)
- 用matlab绘制挠度图,如何绘制载荷挠度曲线图
- 计算机电子贺卡制作圣诞节,如何制作电子圣诞贺卡?贺卡制作步骤
- openGL之API学习(七十八)SPIR-V
- 相对路径./ ../ /解释
- 海上风电场对雷达性能的影响——绕射损耗
- Android 调整进程的最大fd 数目
- 【每日一练】19—CSS 实现撕纸的效果
- NoClassDefFoundError解决方案
- 简约清新水墨工作汇报PPT模板
热门文章
- Windows 7安全补丁KB3110329遭遇更新失败 且暂无解决方法
- 中间件业务在网易轻舟容器平台的性能调优实践
- Spring杂谈 | 什么是ObjectFactory?什么是ObjectProvider?
- 蚂蚁金服对研发高要求的领域建模能力是指什么?
- Spring Boot 使用 AOP 防止重复提交
- 老大难的空指针,如何优雅处理?
- JS校验金额格式的正则表达式
- 【报错】No match for argument: mysql-community-server Error: Unable to find a match: mysql-community-s
- access 战地1不加入ea_战地1正式加入origin access
- python和表格关系_数据表之多表关联