Redis读写锁
Posted lovoo
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Redis读写锁相关的知识,希望对你有一定的参考价值。
前言
读写锁的好处就是能帮助客户读到的数据一定是最新的,写锁是排他锁,而读锁是一个共享锁,如果写锁一直存在,那么读取数据就要一直等待,直到写入数据完成才能看到,保证了数据的一致性。
代码示例
在这个例子中,使用redis在writeLock()写数据,然后在readLock()函数中读出来
@ResponseBody
@GetMapping("/writeLock")
public String writeLock(){
//获得锁
RReadWriteLock rwlock = redissonClient.getReadWriteLock("rwlock");
//加锁
RLock rLock = rwlock.writeLock();
try {
new RedisTool().set("name", "tom");
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}finally {
System.out.println("解写锁:" + Thread.currentThread().getId());
//解锁
rLock.unlock();
}
return "writeLock";
}
@ResponseBody
@GetMapping("/readLock")
public String readLock(){
//获得锁
RReadWriteLock rwlock = redissonClient.getReadWriteLock("rwlock");
//加锁
RLock rLock = rwlock.readLock();
try {
System.out.println("加读锁成功了..........................");
String name = new RedisTool().get("name");
System.out.println(name);
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}finally {
System.out.println("解读锁:" + Thread.currentThread().getId());
//解锁
rLock.unlock();
}
return "readLock";
}
以上是关于Redis读写锁的主要内容,如果未能解决你的问题,请参考以下文章