Caching 如何将Hazelcast与MapStore一起使用
我正在使用Hazelcast作为我的应用程序的缓存解决方案。 我的应用程序几乎没有对数据库的插入和更新,这些也需要同步到缓存 我希望使用MapStore功能,以便在执行IMap.put()时,Hazelcast将负责在底层数据库中持久化对象,并更新其缓存 在重写的存储实现中,我希望以以下方式调用我的DAO来持久化数据Caching 如何将Hazelcast与MapStore一起使用,caching,hazelcast,Caching,Hazelcast,我正在使用Hazelcast作为我的应用程序的缓存解决方案。 我的应用程序几乎没有对数据库的插入和更新,这些也需要同步到缓存 我希望使用MapStore功能,以便在执行IMap.put()时,Hazelcast将负责在底层数据库中持久化对象,并更新其缓存 在重写的存储实现中,我希望以以下方式调用我的DAO来持久化数据 public void store(Long key, Product value) { log.info("Storing Data for Employ
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调用中,我想使用“key”作为“employeeId”,但这只是在Db中插入此记录后生成的。那么,当我没有身份证的时候,我该如何放入缓存呢。?我希望Hazelcast使用作为store方法调用的一部分(或任何其他方式)生成的“id”作为对象的键
Imap.put(关键,新员工(“员工姓名”、“员工年龄”))
2) MapStore实现的store方法返回一个void,因此我无法将为此对象生成的Id返回给客户端。我怎样才能做到这一点?
我尝试在映射上使用MapEntryListeners,但添加的条目回调不会返回新对象。我还向MapStore添加了后处理MapStore接口,但无法将新值返回给客户端
请告知您有两种选择:
1) 在数据库外部生成employeeId
。您可以使用来自Hazelcast的
2) 如果必须让数据库生成id,则需要在将员工
存储到数据库中后手动将其放入缓存中