当前位置: 首页 > news >正文

RedisTemplate的Long类型使用increment自增报错

问题描述

代码如下

 @Resourceprivate RedisTemplate<String,String > redisTemplate;redisTemplate.opsForValue().set("testKey", 0L);
redisTemplate.opsForValue().increment("testKey");

工作里用Long类型存储评论数,在使用increment自增时报错,报错信息如下

redis ERR value is not an integer or out of range 

原因分析:

查看redis存入的数据发现是0L,读取出来是Long类型没有问题,但是不能自增,没有L可以正常。查了查redisTemplate是对对象序列化然后存储的,所以存入0L是因为序列化的原因。


解决方案:

redisTamplate支持在配置中指定各种类型的序列化方式,将value类型的序列化方式

// 将对象序列化
ObjectMapper om=new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance,
ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
// json序列化配置
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
jackson2JsonRedisSerializer.setObjectMapper(om);
template.setValueSerializer(jackson2JsonRedisSerializer);

注意:这样改之后,存入redis中直接取出来是int类型,如需Long接收需要转换

http://www.lryc.cn/news/360599.html

相关文章:

  • 【代码随想录训练营】【Day 36】【贪心-3】| Leetcode 1005, 134, 135
  • 2.7HDR与LDR
  • YOLOv5改进(五)-- 轻量化模型MobileNetv3
  • 用户流失分析:如何使用Python训练一个用户流失预测模型?
  • 【计算机毕设】基于SpringBoot的社区医院信息平台设计与实现 - 源码免费(私信领取)
  • LLM——深入探索 ChatGPT在代码解释方面的应用研究
  • Android中ANR的分析和解决
  • Kotlin 类
  • Forth Python语言:深度解析其四维、五维、六维与七维之奥秘
  • MySQL--复合查询
  • 前端项目开发,3个HTTP请求工具
  • Java_Mybatis
  • 2024HW|常见红队使用工具
  • Redisson集成SpringBoot
  • 设计模式(十二)行为型模式---模板方法模式
  • 【气象常用】剖面图
  • LabVIEW高低温试验箱控制系统
  • Flutter 中的 SliverFillViewport 小部件:全面指南
  • 明日周刊-第12期
  • 算法之美阅读笔记
  • 新手学习STM32还是ESP32
  • 关于vlookup的第一个参数的个人理解
  • vector实现后半部分
  • Maven配置
  • python 第一天
  • Day03 左侧菜单数据绑定
  • JavaScript笔记三-JavaScript常用对象
  • 最新的CleanMyMac X4.15.4中文破解版新功能介绍及CleanMyMac 安装激活指南
  • 密文域可逆信息隐藏安全性研究-从图像到视频
  • 使用Python进行图像锐化的4个基础操作