【问题标题】:redisson: deleting nested object from redisredisson:从redis中删除嵌套对象
【发布时间】:2020-12-07 13:38:29
【问题描述】:

我正在使用 Java 的 redisson 库来维护用于存储嵌套对象的 RLO(redisson 活动对象)。我使用 delete 从 redis 中删除了这些嵌套对象,但是从 redis-cli 我看到实际上该对象已被部分删除。我错过了什么?

【问题讨论】:

  • 请添加一些代码以显示您实际尝试过的内容,以便我们检查您缺少什么

标签: java redisson


【解决方案1】:

我也遇到过不完全删除的问题,但我认为这是由于有两种不同的 delete 方法,它们的行为不同。

    /**
     * Deletes attached object including all nested objects.
     *
     * @param <T> Entity type
     * @param attachedObject - proxied object
     */
    <T> void delete(T attachedObject);

    /**
     * Deletes object by class and ids including all nested objects.
     *
     * @param <T> Entity type
     * @param entityClass - object class
     * @param ids - object ids
     * 
     * @return amount of deleted objects
     */
    <T> long delete(Class<T> entityClass, Object... ids);

虽然他们都说他们会删除所有嵌套对象,但只有其中一个会执行此操作。第一种方法实际上会调用私有方法

    private <T> void delete(T attachedObject, Set<String> deleted)

它将执行嵌套对象的删除,快速检查后可以看到:

        for (Entry<String, Object> obj : getMap(attachedObject).entrySet())

我不知道这是否是一个错误。

暂时还是用其他方法吧。如果您有实体 ID,那么在返回的活动对象上运行 getdelete 会很容易。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-12-07
    • 2021-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多