Redis Lock key in java



我在我的java项目中使用Redis,我需要获取一个键的值,然后做一些修改,然后再次设置该键的值。 我的要求是,如果一个线程获得了键的值,那么另一个线程应该等到第一个线程设置该键的值。 我本可以使用同步,但我们在项目中使用多个服务器,因此同步不适用于这种情况。 任何人都可以为我建议这种情况的其他解决方案。

我认为Redisson项目是你的完美解决方案。

免责声明:我是瑞迪生项目的成员

Redisson 理解需要一种更抽象的方式来使用 redis,因此我们创建了许多对象和服务,这些对象和服务在您自己的 Redis 之上工作,并公开了标准的 Java 接口。所有这些对象和服务都是分布式的,并且是线程安全的。

为了解决您的问题,我们有很多锁和同步器供您选择:Lock(ReentrantLock(,FairLock,MultiLock,RedLock(如官方文档中所述,是的,我们已经阅读了所有内容(,ReadWriteLock,信号量,PermitExpirableSemaphore,CountDownLatch。

用法再简单不过了:

节点 1:

Config config = ;//create your own configuration object based on connections types
RedissonClient redisson = Redisson.create(config);
//The Lock is just a java.util.concurrent.locks.Lock
Lock lock = redisson.getLock("myLock");
lock.lock();
//or if you want to have a lease time on the lock
((RLock) lock).lock(10, TimeUnit.SECONDS);
//do other business here.
lock.unlock();

节点 2:

//The same as node1

如果您想了解更多信息,请访问我们的网站 https://redisson.org

最新更新