1. 前因
以前实现过一个Redis实现的全局锁, 虽然能用, 但是感觉很不完善, 不可重入, 参数太多等等.
最近看到了一个新的Redis客户端Redisson, 看了下源码, 发现了一个比较好的锁实现RLock, 于是记录下.
2. Maven依赖
1
2
3
4
5
|
<
dependency
>
<
groupId
>org.redisson</
groupId
>
<
artifactId
>redisson</
artifactId
>
<
version
>1.2.1</
version
>
</
dependency
>
|
3. 初试
Redisson中RLock的使用很简单, 来看看一个最简单的例子.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
|
import
org.redisson.Redisson;
import
org.redisson.core.RLock;
public
class
Temp {
public
static
void
main(String[] args)
throws
Exception {
Redisson redisson = Redisson.create();
RLock lock = redisson.getLock(
"haogrgr"
);
lock.lock();
try
{
System.out.println(
"hagogrgr"
);
}
finally
{
lock.unlock();
}
redisson.shutdown();
}
}
|
4. RLock接口
通过上面的例子可以看出, 使用起来和juc里面的Lock接口使用很类似, 那么来看看RLock这个接口.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
|
Rlock
|
----------Lock
|
----------void lock()
|
----------void lockInterruptibly()
|
----------boolean tryLock()
|
----------boolean tryLock(long time, TimeUnit unit)
|
----------void unlock()
|
----------Condition newCondition()
|
----------RObject
|