Redis读写锁
前言读写锁的好处就是能帮助客户读到的数据一定是最新的,写锁是排他锁,而读锁是一个共享锁,如果写锁一直存在,那么读取数据就要一直等待,直到写入数据完成才能看到,保证了数据的一致性。代码示例在这个例子中,使用redis在writeLock()写数据,然后在readLock()函数中读出来@ResponseBody@GetMapping("/writeLock")public String writeL
·
前言
读写锁的好处就是能帮助客户读到的数据一定是最新的,写锁是排他锁,而读锁是一个共享锁,如果写锁一直存在,那么读取数据就要一直等待,直到写入数据完成才能看到,保证了数据的一致性。
代码示例
在这个例子中,使用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";
}
更多推荐
已为社区贡献6条内容
所有评论(0)