【问题标题】:How to use Hazelcast with MapStore如何在 MapStore 中使用 Hazelcast
【发布时间】:2015-10-21 14:19:24
【问题描述】:

我正在使用 Hazelcast 作为我的应用程序的缓存解决方案。 我的应用程序对数据库的插入和更新很少,这些也需要同步到缓存。

我想使用 MapStore 功能,以便当我执行 IMap.put() 时,Hazelcast 负责将对象持久保存在底层 Db 中并更新其缓存。

在覆盖的存储实现中,我想以以下方式调用我的 DAO 来持久化数据。

public void store(Long key, Product value)
    {
        log.info("Storing Data for Employee {} in Database using DataStore ",     value);
    Long employeeId = employeeDao.create(value);
    value.setId(employeeId );

}

下面列出了几个问题:- 1)在put call中,我想使用“key”作为“employeeId”,但这仅在数据库中的该记录发生插入后生成。那么在没有Id的情况下如何放入Cache呢?我希望 Hazelcast 使用作为存储方法调用(或任何其他方式)的一部分生成的“id”作为我的对象的键。

Imap.put(key,new Employee("name_of_Employee","age_of_employee"))

2) MapStore 实现的 store 方法返回一个 void,因此我无法将为此对象生成的 Id 返回给客户端。我怎样才能做到这一点? 我尝试在地图上使用 MapEntryListeners,但添加的条目回调不返回新对象。我还在 MapStore 中添加了 PostProcessingMapStore 接口,但无法将新值返回给客户端。

请指教

【问题讨论】:

    标签: caching hazelcast


    【解决方案1】:

    你有两个选择:

    1) 在数据库之外生成employeeId。您可以使用 Hazelcast 的 IdGenerator 来执行此操作。

    2) 如果一定要让数据库生成id,则需要将Employee存入数据库后手动放入缓存中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多