摘要:使用已经很长一段时间了,在项目使用过程中还是犯了一些常见的错误,现在总结一下,避免自己以后再犯相同的错误。
使用spring data redis已经很长一段时间了,在项目使用过程中还是犯了一些常见的错误,现在总结一下,避免自己以后再犯相同的错误。
1. expireAt() 设置超时时间错误以前在项目中主要使用的expire()这个设置key超时时间的方法,在最近的项目中,想让某个key在某个时间点过期,比如按照日的排行榜,在第二天排行榜就没有意思,可以设置当日的key在第二天的零点过期。
1.1 问题描述在使用expireAt()中,发觉设置过期时间之后,过期时间是一个特别大的时间,感觉不太对,就用命令行试了一下,发现没有问题,怀疑可能是spring data redis框架的问题,顺着看了一下代码,应为使用的是redis cluster集群模式,在BinaryJedisCluster.java的pexpireAt居然使用的是pexpire()方法,应该用pexpireAt()才对
@Override public Long pexpireAt(final byte[] key, final long millisecondsTimestamp) { return new JedisClusterCommand1.2 解决办法(connectionHandler, maxAttempts) { @Override public Long execute(Jedis connection) { return connection.pexpire(key, millisecondsTimestamp); } }.runBinary(key); }
public void expireAt(String key, Date deadLine){ final byte[] rawKey = rawKey(key); redisTemplate.execute(connection -> connection.expireAt(rawKey, deadLine.getTime() / 1000), true); }2. zset的reverseRange问题
在使用reverseRange(long start, long end)过程中,在项目中当成mysql的分页处理,把返回数据大小直接赋值给end,导致返回的数据一直有问题。
用方法返回数据,包括start和end位置的数据,一般传入第二个参数为pageStart + pageSize -1
在使用Hash,Zset等数据类型时,没有先检查一下缓存的key存在与否,而是直接使用,导致程序异常,报出空指针。
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/72561.html
摘要:如问到是否使用某框架,实际是是问该框架的使用场景,有什么特点,和同类可框架对比一系列的问题。这两个方向的区分点在于工作方向的侧重点不同。 [TOC] 这是一份来自哔哩哔哩的Java面试Java面试 32个核心必考点完全解析(完) 课程预习 1.1 课程内容分为三个模块 基础模块: 技术岗位与面试 计算机基础 JVM原理 多线程 设计模式 数据结构与算法 应用模块: 常用工具集 ...
摘要:欢迎访问我的欢迎访问我的内容所有原创文章分类汇总及配套源码,涉及等本篇概览本篇概览本文是实战系列的第八篇,经过前面的学习,咱们对过滤器已了解得差不多,今天来补全过滤器的最后一个版块限流默认的限流器是基于实现的,限流算法是大家熟悉的令牌桶关于欢迎访问我的GitHubhttps://github.com/zq2599/blog_demos内容:所有原创文章分类汇总及配套源码,涉及Java、Doc...
摘要:为什么我会说它们是一样的简单思考一下我的后端书架后端掘金我的后端书架月前本书架主要针对后端开发与架构。一方案调研版本选择当前主流版本是和应用的后台运行配置后端掘金酱油一篇,整理一下关于后台运行的一些配置方式。 分享 50 个完整的 React Native 项目 - 掘金本文为 Marno 原创,转载必须保留出处! 公众号 aMarno,关注后回复 RN 加入交流群 简书专题《 Rea...
阅读 788·2021-10-09 09:44
阅读 692·2019-08-30 13:55
阅读 3153·2019-08-29 15:07
阅读 3218·2019-08-29 13:09
阅读 2413·2019-08-29 11:10
阅读 1289·2019-08-26 14:05
阅读 3591·2019-08-26 13:57
阅读 2206·2019-08-23 16:42