Aerospike提供行级锁定。
(1)此功能是否可用于实现多记录操作互斥锁?
(2)推荐?
示例实施
- 两个UDF,一个用于获取锁定,一个用于释放它
- 申请必须在开始“操作”之前获得锁定
- 锁定记录可以有TTL,以防应用程序在a之后无法释放锁定
一定的时间
- 写入执行UDF的策略设置为“ALL”
-- return true if lock acquisition successful; else return false
function acquireLock(record, lockBin)
if not aerospike:exists(record) then
aerospike:create(record)
end
if record[lockBin] == 1 then
return false
end
record[lockBin] = 1
aerospike:update(record)
return true
end
-- return true if lock release successful, else return false
function releaseLock(record, lockBin)
if not aerospike:exists(record) then
return false
end
if not record[lockBin] == 1 then
return false
end
record[lockBin] = 0
aerospike:update(record)
return false
end