阻止多个请求访问GemFire缓存条目

时间:2018-10-11 12:32:10

标签: gemfire

我有一个使用Springboot,Gemfire和MySQL的应用程序。 Springboot应用程序用作rest api。我想“锁定”缓存条目,以便一次发送给rest api的请求可以一次访问GemFire中的某些条目。在条目所有者释放所有权之前,其他人无法对该条目执行CRUD。到目前为止,我有两种方法。

方法1-创建一个GemFire函数,当它由休息api(在不同时间)使用org.apache.geode.cache.Region.getDistributedLock调用时,该条目将对条目执行锁定/解锁。

方法2-创建一个区域(例如,锁),当第一次访问目标区域(例如,客户)的条目时,将在其中创建条目。当第二个请求想要访问相同的条目时,其余api首先检查区域Lock。如果密钥在区域锁中不存在,则Rest api从区域客户检索并返回条目。否则,将不会返回任何条目。一旦第一个请求者完成,rest api就会删除区域Lock中的条目。

我想知道除了这两个选项之外是否还有其他选择。

1 个答案:

答案 0 :(得分:0)

如果要使用节省空间的解决方案,可以在值中添加一个布尔字段以指示其是否被锁定。然后,您也可以使用region.replace(K,V,V)来有效地设置条目上的“锁定”。但是,这会将您的锁定问题泄漏到业务对象中。