<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
Redis Master
(主節點)中處理所有發向 Redis 的寫操作(增刪改),Redis Slave
(從節點)只負責處理讀操作,主節點會不斷將自己的資料同步給從節點,確保主從之間的資料一致性,但是資料同步會存在一定的延時,主從一致性問題就是因為延時而導致的set lock thread1 nx ex 10
來獲取鎖,主節點就會儲存這個鎖的標識 thread1,然後主節點會向從節點進行同步,但在同步尚未完成時時主節點發生故障,Redis 哨兵發現主節點宕機後,使用者端連線會斷開,然後從從節點中選出一個作為新的主節點,但是由於之前主從同步未完成,即 thread1 這個鎖已經丟失,所以此時 Java 應用再來存取新的主節點時就會發現鎖失效了,此時其他執行緒來獲取鎖時也能獲取成功,這時就可能出現並行安全問題,以上就是主從一致性導致的鎖失效問題mutilLock
package com.hmdp.config; import org.redisson.Redisson; import org.redisson.api.RedissonClient; import org.redisson.config.Config; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; @Configuration public class RedissonConfig { @Bean public RedissonClient redissonClient() { // 設定 Config config = new Config(); // 地址 & 密碼 config.useSingleServer().setAddress("redis://ip:埠").setPassword("pwd"); // 建立 RedissonClient 物件 return Redisson.create(config); } @Bean public RedissonClient redissonClient2() { // 設定 Config config = new Config(); // 地址 & 密碼 config.useSingleServer().setAddress("redis://ip:埠").setPassword("pwd"); // 建立 RedissonClient 物件 return Redisson.create(config); } @Bean public RedissonClient redissonClient3() { // 設定 Config config = new Config(); // 地址 & 密碼 config.useSingleServer().setAddress("redis://ip:埠").setPassword("pwd"); // 建立 RedissonClient 物件 return Redisson.create(config); } }
package com.hmdp; import lombok.extern.slf4j.Slf4j; import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.redisson.api.RLock; import org.redisson.api.RedissonClient; import org.springframework.boot.test.context.SpringBootTest; import javax.annotation.Resource; import java.util.concurrent.TimeUnit; @Slf4j @SpringBootTest public class TestRedisson { @Resource private RedissonClient redissonClient; @Resource private RedissonClient redissonClient2; @Resource private RedissonClient redissonClient3; private RLock lock; @BeforeEach void setUp() { RLock lock1 = redissonClient.getLock("order"); RLock lock2 = redissonClient2.getLock("order"); RLock lock3 = redissonClient3.getLock("order"); // 建立連鎖 multiLock lock = redissonClient.getMultiLock(lock1, lock2, lock3); } @Test void method1() throws InterruptedException { // 嘗試獲取鎖 boolean isLock = lock.tryLock(1L, TimeUnit.SECONDS); if (!isLock) { log.error("獲取鎖失敗 .... 1"); return; } try { log.info("獲取鎖成功 .... 1"); method2(); log.info("開始執行業務 .... 1"); } finally { log.warn("準備釋放鎖 .... 1"); lock.unlock(); } } void method2() { // 嘗試獲取鎖 boolean isLock = lock.tryLock(); if (!isLock) { log.error("獲取鎖失敗 .... 2"); return; } try { log.info("獲取鎖成功 .... 2"); log.info("開始執行業務 .... 2"); } finally { log.warn("準備釋放鎖 .... 2"); lock.unlock(); } } }
跟蹤原始碼,我們發現只有所有的鎖都獲取成功了才會返回 true
以上就是Redisson 主從一致性問題詳解的詳細內容,更多關於Redisson 主從一致的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45