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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > 数据库 >内容正文

数据库

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

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

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

  • 寫(xiě)鎖沒(méi)釋放讀鎖必須等待
  • 讀 + 讀 :相當(dāng)于無(wú)鎖,并發(fā)讀,只會(huì)在Redis中記錄好,所有當(dāng)前的讀鎖。他們都會(huì)同時(shí)加鎖成功
  • 寫(xiě) + 讀 :必須等待寫(xiě)鎖釋放
  • 寫(xiě) + 寫(xiě) :阻塞方式
  • 讀 + 寫(xiě) :有讀鎖。寫(xiě)也需要等待
  • 只要有讀或者寫(xiě)的存都必須等待
@GetMapping(value = "/write") @ResponseBody public String writeValue() {String s = "";RReadWriteLock readWriteLock = redisson.getReadWriteLock("rw-lock");RLock rLock = readWriteLock.writeLock();try {//1、改數(shù)據(jù)加寫(xiě)鎖,讀數(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; }

?

總結(jié)

以上是生活随笔為你收集整理的缓存-分布式锁-Redisson-读写锁补充的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

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