RedisTemplate使用zadd报错java.lang.StackOverflowError

这篇具有很好参考价值的文章主要介绍了RedisTemplate使用zadd报错java.lang.StackOverflowError。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

代码当中使用RedisTemplate操作String、List都是正常的,但是操作zadd就会报错,有人说是这两个依赖的版本不一致的问题,但是项目中还有其他地方要用到,所以改版本号行不通,

        <dependency>
            <groupId>org.redisson</groupId>
            <artifactId>redisson-spring-boot-starter</artifactId>
            <version>3.17.3</version>
        </dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.4.2</version>
        <relativePath/>

下面是我操作的核心代码

    @Resource
    private RedisTemplate<String, String> redisTemplate;

    public void enqueue(String queueName, String element) {
        log.info("ZSetQueueManager enqueue start,queueName:{},element:{}", queueName, element);
        long timeMillis = System.currentTimeMillis();
        try {
            redisTemplate.setKeySerializer(new StringRedisSerializer());
            redisTemplate.setValueSerializer(new StringRedisSerializer());
            ZSetOperations<String, String> opsForZSet = redisTemplate.opsForZSet();
            opsForZSet.add(queueName, element, timeMillis);
            log.info("ZSetQueueManager enqueue end,queueName:{},element:{}", queueName, element);
        } catch (Exception e) {
            log.error("ZSetQueueManager enqueue error,queueName:{},element:{}", queueName, element, e);
        }
    }

RedisTemplate使用zadd报错java.lang.StackOverflowError,Redis,java,开发语言,redis
起初我认为是版本号不一致的问题,因为线上服务器是7.0,本地是5.0,但是一推敲发现不成立,zadd操作应该哪个版本都支持的,所以我排除了这种想法
解决方案:
改用Redisson

    @Resource
    private Redisson redissonClient;
    
    public void enqueue(String queueName, String element) {
        log.info("ZSetQueueManager enqueue start,queueName:{},element:{}", queueName, element);
        long timeMillis = System.currentTimeMillis();
        try {
//            RScoredSortedSet<Object> scoredSortedSet = redissonClient.getScoredSortedSet(queueName);
//            scoredSortedSet.add(0, element);
            redisTemplate.setKeySerializer(new StringRedisSerializer());
            redisTemplate.setValueSerializer(new StringRedisSerializer());
            ZSetOperations<String, String> opsForZSet = redisTemplate.opsForZSet();
            opsForZSet.add(queueName, element, timeMillis);
            log.info("ZSetQueueManager enqueue end,queueName:{},element:{}", queueName, element);
        } catch (Exception e) {
            log.error("ZSetQueueManager enqueue error,queueName:{},element:{}", queueName, element, e);
        }
    }

RedisTemplate使用zadd报错java.lang.StackOverflowError,Redis,java,开发语言,redis文章来源地址https://www.toymoban.com/news/detail-793809.html

到了这里,关于RedisTemplate使用zadd报错java.lang.StackOverflowError的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 使用IDEA时遇到java.lang.ClassNotFoundException: com.mysql.cj.jdbc.Driver报错的解决方案

    先检查项目lib文件夹下有没有mysql的jar包,没有就把jar包复制到该目录下 再检查项目结构中有没有导入mysql的jar包,如果没有导入后记得点击OK。 最后检查你的tomcat的lib目录下有没有mysql的jar包,没有就把该jar包复制到该目录下。 最后重启IDEA即可    mysql 8.0以上 的版本使用

    2024年02月03日
    浏览(60)
  • 报错:java.lang.IllegalArgumentException

    开发,测试环境运行正常的接口到现场报错,报错日志关键信息如下:java.lang.IllegalArgumentException: Invalid character found in the request target. The valid characters are defined in RFC 7230 and RFC 3986。 由于代码在开发测试环境测试通过,判断大概率是现场特殊数据导致问题。查资料得知,如果

    2024年02月04日
    浏览(52)
  • java连接redis,日志报错java.lang.IllegalStateException

    日志具体报错如下,无法启动应用 pom.xml java程序 出现这种问题的原因是版本不合适,使用springboot版本2.7.6,但是使用spring-boot-date的版本是1.7.2.RELEASE 注释版本 重新启动java程序,启动成功

    2024年01月23日
    浏览(42)
  • java反射异常报错解决:java.lang.NoSuchFieldException

    我这里是学习测试开发时报错,关联:运行代码中调用另一个代码文件的私有属性并且这个私有属性还需与本地excel文件中的title一致! 报错信息如下图: 69行代码: 103行代码:  Caseinfo私有属性代码: excel下标0行的列头: 总结:最终通过反复查看java.lang.NoSuchFieldException源代

    2024年02月12日
    浏览(42)
  • 报错throws java.lang.ClassFormatError accessible: module java.base does not “opens java.lang“

    有时候项目在前端浏览某些页面时,会突然报如下错误: 与此同时,后端也会跟着报错:  问题表现出来的现象就是非法反射访问警告,之前系统运行都没问题,怎么突然就报这种错误哪,会把人搞得措手不及、不知如何处理。 其实这里有一个非常重要的线索: throws java

    2024年02月07日
    浏览(45)
  • Mybatisplus报错 field private final java.lang.Class java.lang.invoke.SerializedLambda.capturingClass

    Unable to make field private final java.lang.Class java.lang.invoke.SerializedLambda.capturingClass accessible: module java.base does not “opens java.lang.invoke” to unnamed module @6dc17b83 其实是Mybatisplus和Java的版本兼容出现了问题。 这个错误是因为在 Java 9 及之后的版本中,模块化系统 (Module System) 引入了访问限

    2024年02月04日
    浏览(54)
  • IDEA报错:java.lang.NoSuchFieldError 和 NoSuchMethodError

    1、报错信息 java.lang.NoSuchFieldError 和 NoSuchMethodError 2、场景 通过Maven引入了一个jar包,某一天新增了一个类的属性或者静态属性。然后发现编译完全正确,但是实际运行一直在报NoSuchFieldError。 3、造成原因只有以下两种(不用想其他的,没有其他可能) 1、你项目中有同一个

    2024年02月10日
    浏览(40)
  • 【Android】报错java.lang.reflect.InvocationTargetException解决办法

    结果图 原因 InvocationTargetException异常由Method.invoke(obj, args…)方法抛出。(反射异常) 当被调用的方法的内部抛出了异常而没有被捕获时,将由此异常接收!!! 反射层将所有的异常都包装在一个InvocationTargetException 中,能使你区分异常的实际上是反射层的引起的一个调用失败(

    2024年01月21日
    浏览(42)
  • 项目bug——编码问题报错(java.lang.IllegalStateException)

    项目拉下后报错 2023-07-17 14:26:07.596 ERROR 14300 — [ main] o.s.boot.SpringApplication : Application run failed java.lang.IllegalStateException: Failed to load property source from ‘file:/Users/wang/IdeaProjects/ms-family-pre/target/classes/application.yaml’ (classpath:/application.yaml) at org.springframework.boot.context.config.ConfigFileAppl

    2024年02月16日
    浏览(50)
  • Android报错:compileDebugJavaWithJavac FAILED、java.lang.AssertionError: annotationType()

    compileSdk:33 targetSdk:33 gradle:6.9.4 JDK:1.8.0 方法1 、删除代码中的这个注解  @Deprecated ,如下图所示: 方法2 、升级JDK到11 网上搜查 compileDebugJavaWithJavac FAILED 基本都是将compileSdk和targetSdk修改到30(及)以下,但试过发现未解决我的问题。 然后又试了几个我怀疑的地方还是不行。

    2024年02月09日
    浏览(33)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包