生活随笔
收集整理的這篇文章主要介紹了
缓存-分布式锁-Redisson-读写锁补充
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
讀寫鎖:它的特點就是:保證一定能讀到最新數據,修改期間,寫鎖是一個排它鎖(互斥鎖、獨享鎖),讀鎖是一個共享鎖
- 寫鎖沒釋放讀鎖必須等待
- 讀 + 讀 :相當于無鎖,并發讀,只會在Redis中記錄好,所有當前的讀鎖。他們都會同時加鎖成功
- 寫 + 讀 :必須等待寫鎖釋放
- 寫 + 寫 :阻塞方式
- 讀 + 寫 :有讀鎖。寫也需要等待
- 只要有讀或者寫的存都必須等待
@GetMapping(value = "/write")
@ResponseBody
public String writeValue() {String s = "";RReadWriteLock readWriteLock = redisson.getReadWriteLock("rw-lock");RLock rLock = readWriteLock.writeLock();try {//1、改數據加寫鎖,讀數據加讀鎖rLock.lock();s = UUID.randomUUID().toString();ValueOperations<String, String> ops = stringRedisTemplate.opsForValue();ops.set("writeValue",s);TimeUnit.SECONDS.sleep(10);} catch (InterruptedException e) {e.printStackTrace();} finally {rLock.unlock();}return s;
}@GetMapping(value = "/read")
@ResponseBody
public String readValue() {String s = "";RReadWriteLock readWriteLock = redisson.getReadWriteLock("rw-lock");//加讀鎖RLock rLock = readWriteLock.readLock();try {rLock.lock();ValueOperations<String, String> ops = stringRedisTemplate.opsForValue();s = ops.get("writeValue");try { TimeUnit.SECONDS.sleep(10); } catch (InterruptedException e) { e.printStackTrace(); }} catch (Exception e) {e.printStackTrace();} finally {rLock.unlock();}return s;
}
?
總結
以上是生活随笔為你收集整理的缓存-分布式锁-Redisson-读写锁补充的全部內容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。