gemfire - 防止多个请求访问 GemFire 缓存的条目
问题描述
我有一个使用 Springboot、Gemfire 和 MySQL 的应用程序。Springboot 应用程序用作休息 api。我想“锁定”缓存条目,以便一次只有一个发送到 rest api 的请求可以访问 GemFire 中的某个条目。在条目所有者释放所有权之前,其他人不能对该条目进行 CRUD。到目前为止,我有两种方法。
方法 1 - 创建一个 GemFire 函数,该函数在 rest api(在不同时间)使用 org.apache.geode.cache.Region.getDistributedLock 调用时对条目执行锁定/解锁。
方法 2 - 创建一个区域(例如 Lock),在第一次访问目标区域(例如 Customer)的条目时创建一个条目。当第二个请求想要访问同一个条目时,rest api 首先检查区域锁定。如果区域 Lock 中不存在密钥,Rest api 会从区域 Customer 检索并返回条目。否则,将不返回任何条目。一旦第一个请求者完成,rest api 将删除 region Lock 中的条目。
我想知道除了这两个选项之外是否还有其他选择。
解决方案
如果您想要一个更节省空间的解决方案,您可以在值中添加一个布尔字段以指示它是否被锁定。然后,您也可以使用 region.replace(K,V,V) 有效地设置条目上的“锁定”。虽然,这会将您的锁定问题泄漏到您的业务对象中。
推荐阅读
- python - 使用变量的 Python SQL 查询?
- php - 如何从 RabbitMQ 向浏览器返回响应
- c# - 在没有 QueryStrings 的 Response.Redirect 上传递参数
- powershell - 将数据导出到 CSV 列
- reactjs - react import 语句中的@符号是什么意思
- perl - 如何在perl的foreach循环中查找和删除字符串中重复值的出现
- python - 使用 Beautiful Soup 在跨度中查找部分类名
- scala - Avro 没有为 Array 类型填充方括号
- excel - 如何在 VBA 中通过名称引用几个组合框的名称
- php - 具有混合键的 PHP 关联数组中缺少一个值