可能重复:
以原子方式更新多行
我有一组存储在 noSQL 数据库中的数据块。要更新数据,我需要:
- 获取(获取)
- 更新数据
- 写(放)
(不幸的是,没有直接的 CAS 支持)。
此操作是分批完成的,由键(二进制键/值 DB)索引的数据块属于我可以用于锁定的顺序。但是,我可能需要在一个批次中更新多个订单,因此我需要锁定全部或不锁定(最好是定时阻塞操作)。
API 看起来像:
void lock(long... orderIds, long timeout) throws NotPossibleToGetLockException;
void unlock(long... orderIds);
我想死锁不是一个真正的问题,因为我可以在尝试获得锁之前轻松排序所需的订单。
有没有支持这种功能的库?