spring boot使用redis 存储数据时 字段为时间类型为LocalDateTime 发现存储到redis变成了对象

在项目中从redis获取带有LocalDateTime类型属性的对象时出现了以下异常:

go 复制代码
"createTime": {
    "dayOfYear":141,
    "dayOfWeek":"WEDNESDAY",
    "month":"MAY",
    "dayOfMonth":20,
    "year":2020,
    "monthValue":5,
    "hour":19,
    "minute":50,
    "second":47,
    "nano":364000000,
    "chronology":{
        "calendarType":"iso8601",
        "id":"ISO"
    }
}

这是因为我们将数据存入redis时,Jackson默认将LocalDateTime类型序列化为对象形式存储

网上的方案是

两种方案

  1. 全局配置 时间类型 序列化
  2. 在实体类上打注解
    // @JsonDeserialize(using = LocalDateTimeDeserializer.class)
    // @JsonSerialize(using = LocalDateTimeSerializer.class)

打注解太麻烦了

  1. 全局配置方案 项目中配置了 但是 还是没解决 不知道哪里出了问题
    下面是我搜的 博客地址 大家可以参考一下

https://blog.csdn.net/weixin_41291118/article/details/123087974

我根据博客 配置了 redisConfig 但是没解决问题

我觉得是可以用的 有可能是我项目中 哪里 影响到了配置

所以最终根据网上的 方案我没成功

我就直接放弃了 使用 Jackson 这个类来序列化

在存 取 redis 数据的时候 用 fastjson 来处理 这样存进去的 LocalDateTime 类型 就是字符串了 就不是对象了

JSONObject.toJSONString 和 JSONObject.parseObject

go 复制代码
    public static <T> T getString(String key, Class<T> valueType) {
        String value = (String) redisTemplate.opsForValue().get(key);

        if (StringUtils.isEmpty(value)) {
            return null;
        }
        return JSONObject.parseObject(value, valueType);
    }
    public static void delString(String key) {
        redisTemplate.delete(key);
    }

    public static <T> Boolean setString(String key, T value, long time, TimeUnit unit) {
        String valueStr = JSONObject.toJSONString(value);
        redisTemplate.opsForValue().set(key, valueStr);
        if (time > 0) {
            redisTemplate.expire(key, time, unit);
        }
        return true;
    }

    public static <T> Boolean setString(String key, T value, long time) {
        String valueStr = JSONObject.toJSONString(value);
        redisTemplate.opsForValue().set(key, valueStr);
        if (time > 0) {
            redisTemplate.expire(key, time, TimeUnit.SECONDS);
        }
        return true;
    }
相关推荐
doris82042 分钟前
使用Yum安装Redis
数据库·redis·缓存
YuanlongWang3 分钟前
C# 基础——值类型与引用类型的本质区别
java·jvm·c#
Boilermaker199224 分钟前
【Redis】哨兵与对脑裂的情况分析
数据库·redis·缓存
Kay_Liang28 分钟前
大语言模型如何精准调用函数—— Function Calling 系统笔记
java·大数据·spring boot·笔记·ai·langchain·tools
自由的疯44 分钟前
Java 如何学习Docker
java·后端·架构
自由的疯1 小时前
Java Docker本地部署
java·后端·架构
007php0071 小时前
猿辅导Java面试真实经历与深度总结(二)
java·开发语言·python·计算机网络·面试·职场和发展·golang
摇滚侠1 小时前
Spring Boot 3零基础教程,WEB 开发 内容协商机制 笔记34
java·spring boot·笔记·缓存
一勺菠萝丶1 小时前
在 macOS 上用 Docker 为 Java 后端 & 常见开发需求搭建完整服务(详尽教程)
java·macos·docker
顾漂亮1 小时前
JVM底层攻坚
java·jvm·spring