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

若依使用RedisCache需要注意的事项

存入redis对象的时候会带一个@type字段,此处需要注意

在这里插入图片描述

存入方:

此处需要注意,存入redis的时候会带一个@type,也就是类的路径名

redisCache.setCacheObject(screenPlayQueueName, userDemondDto,userDemondDto.getPlayDuration().intValue(), TimeUnit.SECONDS);package com.pmkz.core.dto;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;import java.util.Date;
/*** @version 1.0* @description* @date 2025/5/26 16:57*/
@Data
@AllArgsConstructor
@NoArgsConstructor
public class UserOnDemandDto {private Long reId; //资源idprivate String isLoopPlay; //是否循环播放private Long timestamp;private Long userId;private String contentType;private Long playDuration; //持续时间为s@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private Date displayTime; //开始时间@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private Date displayEndTime; //结束时间private double longitude; //经度private double latitude; //纬度private Long logId;//日志id
}
取出方

此处可以看出取出方的类的路径名与存入redis的不一致,就会出现类型转换的错误

 UserOnDemandDto userOnDemandDtoCache = redisCache.getCacheObject(screenPlayQueueName);package com.lxsq.service.dto;import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;import java.math.BigDecimal;
import java.util.Date;/*** @author 陈丹阳* @version 1.0* @description* @date 2025/6/9 8:57*/
@Data
@AllArgsConstructor
@NoArgsConstructor
@Builder
public class UserOnDemandDto {private Long reId; //资源idprivate String isLoopPlay; //是否循环播放private Long timestamp;private Long userId;private String contentType;private Long playDuration; //持续时间为s@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private Date displayTime; //开始时间@JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")private Date displayEndTime; //结束时间private double longitude; //经度private double latitude; //纬度private Long logId;//日志id
}
临时解决方法
        Object result  = redisCache.getCacheObject(screenPlayQueueName);if (result instanceof String) {String jsonStr = (String) result;// 移除@type信息jsonStr = jsonStr.replaceAll("\"@type\":\"[^\"]+\",?", "");jsonStr = jsonStr.replaceAll(",}", "}").replaceAll(",]", "]");// 转换为目标对象userOnDemandDtoCache = JSON.parseObject(jsonStr, UserOnDemandDto.class);}
永久解决办法(在RedisConfig中进行配置)
@SuppressWarnings(value = { "unchecked", "rawtypes" })
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {RedisTemplate<Object, Object> template = new RedisTemplate<>();template.setConnectionFactory(connectionFactory);// 配置FastJson的ParserConfigParserConfig parserConfig = new ParserConfig();parserConfig.setAutoTypeSupport(true); // 开启自动类型支持parserConfig.addAccept("com.yourpackage."); // 添加允许的包名前缀FastJson2JsonRedisSerializer serializer = new FastJson2JsonRedisSerializer(Object.class);serializer.setFastJsonConfig(new FastJsonConfig());serializer.getFastJsonConfig().setParserConfig(parserConfig);template.setKeySerializer(new StringRedisSerializer());template.setValueSerializer(serializer);template.setHashKeySerializer(new StringRedisSerializer());template.setHashValueSerializer(serializer);template.afterPropertiesSet();return template;
}
http://www.xdnf.cn/news/965935.html

相关文章:

  • idea大量爆红问题解决
  • OpenGL学习20250610
  • Docker重启流程解析
  • MySQL中的CONVERT_TZ() 函数
  • C++ 智能指针实现原理
  • [一生一芯] 如何基于iSTA 分析时序
  • 3-存储系统
  • 【OpenCV】双相机结构光成像与图像交叉融合实现【C++篇】
  • 【Qt】Qt生成的exe依赖库与打包
  • 一天时间解决期末不挂科
  • 人工智能增强入侵检测系统以对抗高级持续性杀伤链
  • CTF show Web 红包题第六弹
  • 条件概率:AI大模型概率统计的基石
  • 第二讲 认识变量及数学运算符
  • 《广度优先搜索》题集
  • 一个n8n构建的能和LLM对话的Agent
  • mybatics
  • LCS4110R安全芯片防抄板原理
  • 黑马python(三)
  • 手写muduo网络库(三):事件分发器(Poller,EPollPoller实现)
  • java复习 07
  • C#设计模式
  • 用Python实现卡片人探险游戏:能量采集与生存挑战
  • Spring Boot 4.0.0 新特性详解:深入解读 Spring Framework 7.0.0
  • flutter基础面试知识汇总(二)
  • linux 错误码总结
  • HMTL+CSS+JS-新手小白循序渐进案例入门
  • 期末考试复习总结-《ArkTS基础语法(上)》
  • 无人机机器人资源整合
  • ETL中图表统计分析模版组件使用