# Ignite分布式锁
# 1.概述
Ignite事务会隐式获得分布式锁,但是有的场景可能需要显式获得锁。IgniteCache
API的lock()
方法会返回java.util.concurrent.locks.Lock
的实例,其可以获得指定键的显式分布式锁,通过IgniteCache.lockAll()
方法,也可以在一个集合对象上获得锁。
IgniteCache<String, Integer> cache = ignite.cache("myCache");
// Create a lock for the given key
Lock lock = cache.lock("keyLock");
try {
// Acquire the lock
lock.lock();
cache.put("Hello", 11);
cache.put("World", 22);
}
finally {
// Release the lock
lock.unlock();
}
原子化模式
Ignite中,只有在TRANSACTIONAL
原子化模式中才支持锁,它可以通过CacheConfiguration
的atomicityMode
属性进行配置。
# 2.锁和事务
显式锁是非事务性的,不能在事务中使用(会抛出异常)。如果确实需要在事务中使用显式锁,那么需要使用事务的TransactionConcurrency.PESSIMISTIC
并发控制,它会为相关的缓存数据获得显式锁。
18624049226