资讯专栏INFORMATION COLUMN

spring data redis 项目使用问题汇总

ziwenxie / 1987人阅读

摘要:使用已经很长一段时间了,在项目使用过程中还是犯了一些常见的错误,现在总结一下,避免自己以后再犯相同的错误。

使用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 JedisClusterCommand(connectionHandler, maxAttempts) {
      @Override
      public Long execute(Jedis connection) {
        return connection.pexpire(key, millisecondsTimestamp);
      }
    }.runBinary(key);
  }
1.2 解决办法
    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

3.校验key是否存在

在使用Hash,Zset等数据类型时,没有先检查一下缓存的key存在与否,而是直接使用,导致程序异常,报出空指针。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/72561.html

相关文章

  • Java面试 32个核心必考点完全解析

    摘要:如问到是否使用某框架,实际是是问该框架的使用场景,有什么特点,和同类可框架对比一系列的问题。这两个方向的区分点在于工作方向的侧重点不同。 [TOC] 这是一份来自哔哩哔哩的Java面试Java面试 32个核心必考点完全解析(完) 课程预习 1.1 课程内容分为三个模块 基础模块: 技术岗位与面试 计算机基础 JVM原理 多线程 设计模式 数据结构与算法 应用模块: 常用工具集 ...

    JiaXinYi 评论0 收藏0
  • Spring Cloud Gateway限流实战

    摘要:欢迎访问我的欢迎访问我的内容所有原创文章分类汇总及配套源码,涉及等本篇概览本篇概览本文是实战系列的第八篇,经过前面的学习,咱们对过滤器已了解得差不多,今天来补全过滤器的最后一个版块限流默认的限流器是基于实现的,限流算法是大家熟悉的令牌桶关于欢迎访问我的GitHubhttps://github.com/zq2599/blog_demos内容:所有原创文章分类汇总及配套源码,涉及Java、Doc...

    stonezhu 评论0 收藏0
  • 后端文章 - 收藏集 - 掘金

    摘要:为什么我会说它们是一样的简单思考一下我的后端书架后端掘金我的后端书架月前本书架主要针对后端开发与架构。一方案调研版本选择当前主流版本是和应用的后台运行配置后端掘金酱油一篇,整理一下关于后台运行的一些配置方式。 分享 50 个完整的 React Native 项目 - 掘金本文为 Marno 原创,转载必须保留出处! 公众号 aMarno,关注后回复 RN 加入交流群 简书专题《 Rea...

    CntChen 评论0 收藏0

发表评论

0条评论

ziwenxie

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<