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

Redisson Live Objects使用问题:嵌套Map存储与条件查询失效

问题分析与解决方案

一、嵌套Map字段无法正常存储的问题

原因

entries字段是普通HashMap,Redisson Live Objects默认会将非基本类型字段转为引用对象存储,但你未给该字段添加Redisson集合专属注解,导致无法同步Map修改到Redis;同时手动初始化new HashMap<>()会干扰Redisson的代理过程,无法生成可自动同步的RedissonMap实例。

修复步骤

  1. 给entries字段添加@RMap注解(指定与全局一致的StringCodec),替换无效的@RCascade:
@RMap(codec = StringCodec.class)
private Map<String, String> entries;
  1. 移除手动初始化的= new HashMap<>(),Redisson会在对象持久化时自动创建代理后的RedissonMap实例。
  2. 修改Map后无需额外调用persist,代理后的RedissonMap会自动同步操作到Redis。

二、find()查询无结果的问题

原因

  1. @RIndex索引未正确生成:实体类全局指定StringCodec后,索引存储的Codec可能与字段类型不兼容,导致索引未正确关联数据;
  2. 过期时间设置方式不当:使用asLiveObject(manifest).expire仅设置了Live Object本身的过期,未关联索引键的生命周期,可能导致索引与实体数据不一致。

修复步骤

  1. 给@RIndex字段显式指定Codec,确保与全局一致:
@RIndex(codec = StringCodec.class)
@Getter
private String jobId;
  1. 调整过期时间设置方式,直接在persist时指定,保证实体和索引生命周期一致:
manifest = liveObjects.persist(manifest, Duration.ofMinutes(60));
  1. 检查Redis中索引键的格式:Redisson Live Objects的索引键格式为{类全限定名}:idx:{字段名}(如com.your.package.Manifest:idx:jobId),确认其中是否存在匹配的jobId值。

完整修正后的实体类示例

@RequiredArgsConstructor
@NoArgsConstructor(access = PROTECTED)
@REntity(codec = StringCodec.class)
public class Manifest {

    @RId(generator = UUIDGenerator.class)
    @Getter
    private String id;

    @RIndex(codec = StringCodec.class)
    @Getter
    private String jobId;

    @RIndex(codec = StringCodec.class)
    @Getter
    private String rootFolder;

    @RMap(codec = StringCodec.class)
    private Map<String, String> entries;


    public void add(String path, String hash) {
        if (entries == null) {
            entries = new HashMap<>();
        }
        entries.put(path, hash);
    }

    @Transient
    public int getSize() {
        return entries != null ? entries.size() : 0;
    }

}

修正后的存储代码

RLiveObjectService liveObjects = redisson.getLiveObjectService();
var manifest = new Manifest(jobID, rootPath);
manifest = liveObjects.persist(manifest, Duration.ofMinutes(60));

内容的提问来源于stack exchange,提问作者E-Riz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 03:53:26