Man*_*mar 2 java multithreading redis server
我在我的 java 项目中使用Redis,我需要获取一个键的值,然后进行一些修改,然后再次设置该键的值。我的要求是,如果一个线程获得了一个键的值,那么另一个线程应该等到第一个线程设置该键的值。我本来可以使用同步的,但我们在项目中使用了多个服务器,因此同步在这种情况下不起作用。谁能建议我针对这种情况的其他解决方案。
我认为Redisson项目是您的完美解决方案。
免责声明:我是Redisson项目的成员
Redisson 理解需要有一种更抽象的方式来使用 redis,因此我们创建了许多在您自己的 redis 之上工作并公开标准 java 接口的对象和服务。所有这些对象和服务都是分布式的并且是线程安全的。
为了解决您的问题,我们有很多锁和同步器供您选择:Lock(ReentrantLock)、FairLock、MultiLock、RedLock(如官方文档中所述,是的,我们已经阅读了所有内容)、ReadWriteLock、Semaphore、PermitExpirableSemaphore,倒计时闩锁。
用法再简单不过了:
节点 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();
Run Code Online (Sandbox Code Playgroud)
节点2:
//The same as node1
Run Code Online (Sandbox Code Playgroud)
如果您想了解更多信息,请访问我们的网站https://redisson.org
| 归档时间: |
|
| 查看次数: |
4943 次 |
| 最近记录: |