我怎么能原子地锁定一组键?

时间:2012-09-28 08:30:43

标签: java nosql deadlock atomic cas

  

可能重复:
  Update more than one row atomically

我有一组存储在noSQL数据库中的数据块。要更新我需要的数据:

  1. fetch(get)
  2. 更新数据
  3. 写(放)
  4. (不幸的是没有直接的CAS支持)。

    此操作分批完成,按键索引的数据块(二进制密钥/值DB)属于我可用于锁定的订单。但是,我可能需要在一个批处理中更新多个订单,因此我需要锁定所有或没有锁定的可能性(最好是定时阻塞操作)。

    API看起来像:

    void lock(long... orderIds, long timeout) throws NotPossibleToGetLockException;
    void unlock(long... orderIds);
    

    我认为死锁并不是一个真正的问题,因为我可以在尝试获取锁定之前轻松对所需的订单进行排序。

    是否有支持此类功能的库?

0 个答案:

没有答案