日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

缓存-分布式锁-Redisson-读写锁补充

發(fā)布時間:2024/4/13 数据库 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 缓存-分布式锁-Redisson-读写锁补充 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

讀寫鎖:它的特點就是:保證一定能讀到最新數(shù)據(jù),修改期間,寫鎖是一個排它鎖(互斥鎖、獨享鎖),讀鎖是一個共享鎖

  • 寫鎖沒釋放讀鎖必須等待
  • 讀 + 讀 :相當于無鎖,并發(fā)讀,只會在Redis中記錄好,所有當前的讀鎖。他們都會同時加鎖成功
  • 寫 + 讀 :必須等待寫鎖釋放
  • 寫 + 寫 :阻塞方式
  • 讀 + 寫 :有讀鎖。寫也需要等待
  • 只要有讀或者寫的存都必須等待
@GetMapping(value = "/write") @ResponseBody public String writeValue() {String s = "";RReadWriteLock readWriteLock = redisson.getReadWriteLock("rw-lock");RLock rLock = readWriteLock.writeLock();try {//1、改數(shù)據(jù)加寫鎖,讀數(shù)據(jù)加讀鎖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-读写锁补充的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。