You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spring Reactive Redis缓存存储Boolean类型报序列化异常如何解决?

异常触发原因
  • 从异常栈的DefaultReactiveHashOperations类可以判定,你当前使用的是Redis哈希结构存取数据,而你现有配置仅对普通Key、普通Value的序列化规则做了声明,没有覆盖哈希结构的HashValue序列化场景。未配置HashValue序列化器时,框架无法识别Boolean类型的序列化规则,因此抛出该异常。
  • 你选用的GenericJackson2JsonRedisSerializer本身支持Boolean类型的序列化,并非序列化器本身不兼容该类型。
修复方案

在构建RedisSerializationContext时,补充哈希结构的序列化配置即可,修复后的完整配置如下:

ReactiveRedisTemplate<String, Object> reactiveRedisTemplateGeneric(ReactiveRedisConnectionFactory reactiveRedisConnectionFactory) {
    GenericJackson2JsonRedisSerializer valueSerializer = new GenericJackson2JsonRedisSerializer();
    StringRedisSerializer stringSerializer = new StringRedisSerializer();
    RedisSerializationContext.RedisSerializationContextBuilder<String, Object> builder = 
            RedisSerializationContext.newSerializationContext(stringSerializer);
    // 原有普通value序列化配置
    builder.value(valueSerializer);
    // 新增哈希结构key、value序列化配置
    builder.hashKey(stringSerializer);
    builder.hashValue(valueSerializer);
    RedisSerializationContext<String, Object> context = builder.build();
    return new ReactiveRedisTemplate<>(reactiveRedisConnectionFactory, context);
}

如果后续使用列表、集合等其他Redis数据结构时出现同类序列化报错,可按需补充对应结构的序列化配置(例如builder.listSerializer(valueSerializer)、builder.setSerializer(valueSerializer)),确保所有使用到的数据结构都有匹配的序列化规则。

内容的提问来源于stack exchange,提问作者Anmol Garg

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.21 12:06:03