Aerospike - 实施“批量操作”锁定

时间:2015-12-14 23:08:59

标签: aerospike

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

0 个答案:

没有答案