亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

目錄
一、Redisson 是什麼? " >一、Redisson 是什麼?
二、整合Redisson" >二、整合Redisson
2.1 引入 Maven 依賴" >2.1 引入 Maven 依賴
2.2 自訂設(shè)定類別" >2.2 自訂設(shè)定類別
2.3 測(cè)試設(shè)定類別" >2.3 測(cè)試設(shè)定類別
三、分散式可重入鎖定" >三、分散式可重入鎖定
3.1 可重入鎖定測(cè)試" >3.1 可重入鎖定測(cè)試
3.1.1 驗(yàn)證一:可重入鎖定是阻塞的嗎?
3.1.2 驗(yàn)證二:服務(wù)停了,鎖會(huì)釋放嗎?
3.2 看門狗原理" >3.2 看門狗原理
3.3 設(shè)置鎖過期時(shí)間" >3.3 設(shè)置鎖過期時(shí)間
四、王者方案" >四、王者方案
五、分布式讀寫鎖" >五、分布式讀寫鎖
六、分布式信號(hào)量" >六、分布式信號(hào)量
首頁 Java java教程 分散式鎖中的王者方案 - Redisson

分散式鎖中的王者方案 - Redisson

Aug 24, 2023 pm 03:31 PM
分散式鎖 redisson


分散式鎖中的王者方案 - Redisson

網(wǎng)路上有各種關(guān)於Redis實(shí)作分散式鎖定的方案,但何為王者方案?

答案就:?Redisson。

我們先來看看 Redis 官網(wǎng)對(duì)分散式鎖定的說法:

分散式鎖中的王者方案 - Redisson

#而 Java 版的 分散式鎖定的框架就是 Redisson。

這篇實(shí)戰(zhàn)內(nèi)容將會(huì)以我的開源專案 PassJava 為基礎(chǔ)來整合 Redisson。

我把後端、前端、小程式都上傳到同一個(gè)倉庫裡面了,大家可以透過Github碼雲(yún)存取。網(wǎng)址如下:

Github: https://github.com/Jackson0714/PassJava-Platform

碼雲(yún)#:https: //gitee.com/jayh2018/PassJava-Platform

配套教學(xué):www.passjava.cn

在實(shí)戰(zhàn)前,我們先來看看使用Redisson 的原理。

一、Redisson 是什麼?

如果你之前是在用 Redis 的話,那使用 Redisson 的話將會(huì)事半功倍,Redisson 提供了使用 Redis的最簡(jiǎn)單和最便捷的方法。

Redisson的宗旨是促進(jìn)使用者對(duì) Redis 的關(guān)注分離(Separation of Concern),從而讓使用者能夠?qū)⒕Ω械胤旁谔幚順I(yè)務(wù)邏輯上。

Redisson 是一個(gè)在 Redis 的基礎(chǔ)上實(shí)作的 Java 駐記憶體資料網(wǎng)格(In-Memory Data Grid)。

分散式鎖中的王者方案 - Redisson
  • Netty 框架:Redisson採(cǎi)用了基於NIO的Netty框架,不僅能作為Redis底層驅(qū)動(dòng)客戶端,具備提供對(duì)Redis各種組態(tài)形式的連接功能,對(duì)Redis命令能以同步發(fā)送、非同步形式發(fā)送、非同步流形式發(fā)送或管道形式發(fā)送的功能,LUA腳本執(zhí)行處理,以及處理返回結(jié)果的功能

  • 基礎(chǔ)資料結(jié)構(gòu):將原生的Redis Hash,ListSet,String,Geo,HyperLogLog等資料結(jié)構(gòu)封裝為Java里大家最熟悉的映射(Map),列表(List)集(Set),通用物件桶(Object Bucket),地理空間物件桶(Geospatial Bucket),基數(shù)估計(jì)演算法(HyperLogLog)等結(jié)構(gòu),

  • #分散式資料結(jié)構(gòu):這基礎(chǔ)上也提供了分佈式的多值映射(Multimap),本地快取映射(LocalCachedMap),有序集(SortedSet),計(jì)分排序集(ScoredSortedSet),字典排序集(LexSortedSet),列隊(duì)(Queue),阻塞佇列(Blocking Queue),有界阻塞列隊(duì)(Bounded Blocking Queue),雙端隊(duì)列(Deque),阻塞雙端列隊(duì)(Blocking Deque),阻塞公平列隊(duì)(Blocking Fair Queue),延遲列隊(duì)(Delayed Queue),布隆過濾器(Bloom Filter) ,原子整長(zhǎng)形(Ato??micLong),原子雙精確度浮點(diǎn)數(shù)(AtomicDouble),BitSet等Redis原本沒有的分散式資料結(jié)構(gòu)。

  • 分散式鎖定:Redisson也實(shí)作了Redis文件中提到像是分散式鎖定Lock這樣的更高階應(yīng)用場(chǎng)景。事實(shí)上Redisson並沒有不只步於此,在分散式鎖的基礎(chǔ)上還提供了聯(lián)鎖(MultiLock),讀寫鎖(ReadWriteLock),公平鎖(Fair Lock)紅鎖(RedLock),信號(hào)量(Semaphore),可過期性訊號(hào)量(PermitExpirableSemaphore)閉鎖(CountDownLatch)這些實(shí)際當(dāng)中對(duì)多執(zhí)行緒高並發(fā)應(yīng)用至關(guān)重要的基本元件。正是透過實(shí)現(xiàn)基於Redis的高階應(yīng)用方案,使Redisson成為建構(gòu)分散式系統(tǒng)的重要工具。

  • 節(jié)點(diǎn):Redisson作為獨(dú)立節(jié)點(diǎn)可以用於獨(dú)立執(zhí)行其他節(jié)點(diǎn)發(fā)佈到分散式執(zhí)行服務(wù)分散式調(diào)度服務(wù)裡的遠(yuǎn)端任務(wù)。

二、整合Redisson

#Spring Boot 整合Redisson 有兩種方案:

  • 程式化配置。
  • 檔案方式配置。

本篇介紹如何用程式化的方式整合 Redisson。

2.1 引入 Maven 依賴

在 passjava-question 微服務(wù)的 pom.xml 引入 redisson的 maven 依賴。

<!-- https://mvnrepository.com/artifact/org.redisson/redisson -->
<dependency>
    <groupId>org.redisson</groupId>
    <artifactId>redisson</artifactId>
    <version>3.15.5</version>
</dependency>

2.2 自訂設(shè)定類別

下面的程式碼是單節(jié)點(diǎn) Redis 的設(shè)定。

@Configuration
public class MyRedissonConfig {
    /**
     * 對(duì) Redisson 的使用都是通過 RedissonClient 對(duì)象
     * @return
     * @throws IOException
     */
    @Bean(destroyMethod="shutdown") // 服務(wù)停止后調(diào)用 shutdown 方法。
    public RedissonClient redisson() throws IOException {
        // 1.創(chuàng)建配置
        Config config = new Config();
        // 集群模式
        // config.useClusterServers().addNodeAddress("127.0.0.1:7004", "127.0.0.1:7001");
        // 2.根據(jù) Config 創(chuàng)建出 RedissonClient 示例。
        config.useSingleServer().setAddress("redis://127.0.0.1:6379");
        return Redisson.create(config);
    }
}

2.3 測(cè)試設(shè)定類別

新建一個(gè)單元測(cè)試方法。

@Autowired
RedissonClient redissonClient;

@Test
public void TestRedisson() {
    System.out.println(redissonClient);
}

我們執(zhí)行這個(gè)測(cè)試方法,印出redissonClient

org.redisson.Redisson@77f66138

三、分散式可重入鎖定

3.1 可重入鎖定測(cè)試

基於Redis的Redisson分散式可重入鎖定RLockJava 物件實(shí)作了java.util.concurrent.locks.Lock介面。同時(shí)也提供了非同步(Async)、反射式(Reactive)和RxJava2標(biāo)準(zhǔn)的介面。

RLock lock = redisson.getLock("anyLock");
// 最常見的使用方法
lock.lock();

我們用passjava 這個(gè)開源專案測(cè)試下可重入鎖的兩個(gè)點(diǎn):

  • (1)多個(gè)執(zhí)行緒搶佔(zhàn)鎖,後面鎖需要等待嗎?
  • (2)如果搶占到鎖的執(zhí)行緒所在的服務(wù)停了,鎖會(huì)不會(huì)被釋放?

3.1.1 驗(yàn)證一:可重入鎖定是阻塞的嗎?

為了驗(yàn)證以上兩點(diǎn),我寫了個(gè)demo 程式:程式碼的流程就是設(shè)定WuKong-lock鎖,然後加鎖,列印線程ID,等待10 秒後釋放鎖,最後回傳回應(yīng):「test lock ok」。

@ResponseBody
@GetMapping("test-lock")
public String TestLock() {
    // 1.獲取鎖,只要鎖的名字一樣,獲取到的鎖就是同一把鎖。
    RLock lock = redisson.getLock("WuKong-lock");

    // 2.加鎖
    lock.lock();
    try {
        System.out.println("加鎖成功,執(zhí)行后續(xù)代碼。線程 ID:" + Thread.currentThread().getId());
        Thread.sleep(10000);
    } catch (Exception e) {
        //TODO
    } finally {
        lock.unlock();
        // 3.解鎖
        System.out.println("Finally,釋放鎖成功。線程 ID:" + Thread.currentThread().getId());
    }

    return "test lock ok";
}

先驗(yàn)證第一個(gè)點(diǎn),用兩個(gè) http 請(qǐng)求來測(cè)試搶佔(zhàn)鎖定。

請(qǐng)求的 URL:

http://localhost:11000/question/v1/redisson/test/test-lock
分散式鎖中的王者方案 - Redisson

第一個(gè)線程對(duì)應(yīng)的線程 ID 為 86,10秒后,釋放鎖。在這期間,第二個(gè)線程需要等待鎖釋放。

第一個(gè)線程釋放鎖之后,第二個(gè)線程獲取到了鎖,10 秒后,釋放鎖。

畫了一個(gè)流程圖,幫助大家理解。如下圖所示:

分散式鎖中的王者方案 - Redisson
  • 第一步:線程 A 在 0 秒時(shí),搶占到鎖,0.1 秒后,開始執(zhí)行等待 10 s。
  • 第二步:線程 B 在 0.1 秒嘗試搶占鎖,未能搶到鎖(被 A 搶占了)。
  • 第三步:線程 A 在 10.1 秒后,釋放鎖。
  • 第四步:線程 B 在 10.1 秒后搶占到鎖,然后等待 10 秒后釋放鎖。

由此可以得出結(jié)論,Redisson 的可重入鎖(lock)是阻塞其他線程的,需要等待其他線程釋放的。

3.1.2 驗(yàn)證二:服務(wù)停了,鎖會(huì)釋放嗎?

如果線程 A 在等待的過程中,服務(wù)突然停了,那么鎖會(huì)釋放嗎?如果不釋放的話,就會(huì)成為死鎖,阻塞了其他線程獲取鎖。

我們先來看下線程 A 的獲取鎖后的,Redis 客戶端查詢到的結(jié)果,如下圖所示:

分散式鎖中的王者方案 - Redisson

WuKong-lock 有值,而且大家可以看到 TTL 在不斷變小,說明 WuKong-lock 是自帶過期時(shí)間的。

通過觀察,經(jīng)過 30 秒后,WuKong-lock 過期消失了。說明 Redisson 在停機(jī)后,占用的鎖會(huì)自動(dòng)釋放。

分散式鎖中的王者方案 - Redisson

那這又是什么原理呢?這里就要提一個(gè)概念了,看門狗。

分散式鎖中的王者方案 - Redisson

3.2 看門狗原理

如果負(fù)責(zé)儲(chǔ)存這個(gè)分布式鎖的 Redisson 節(jié)點(diǎn)宕機(jī)以后,而且這個(gè)鎖正好處于鎖住的狀態(tài)時(shí),這個(gè)鎖會(huì)出現(xiàn)鎖死的狀態(tài)。為了避免這種情況的發(fā)生,Redisson內(nèi)部提供了一個(gè)監(jiān)控鎖的看門狗,它的作用是在Redisson實(shí)例被關(guān)閉前,不斷的延長(zhǎng)鎖的有效期。

默認(rèn)情況下,看門狗的檢查鎖的超時(shí)時(shí)間是30秒鐘,也可以通過修改Config.lockWatchdogTimeout來另行指定。

如果我們未制定 lock 的超時(shí)時(shí)間,就使用 30 秒作為看門狗的默認(rèn)時(shí)間。只要占鎖成功,就會(huì)啟動(dòng)一個(gè)定時(shí)任務(wù):每隔 10 秒重新給鎖設(shè)置過期的時(shí)間,過期時(shí)間為 30 秒。

如下圖所示:

分散式鎖中的王者方案 - Redisson
看門狗原理圖-1

當(dāng)服務(wù)器宕機(jī)后,因?yàn)殒i的有效期是 30 秒,所以會(huì)在 30 秒內(nèi)自動(dòng)解鎖。(30秒等于宕機(jī)之前的鎖占用時(shí)間+后續(xù)鎖占用的時(shí)間)。

如下圖所示:

分散式鎖中的王者方案 - Redisson
看門狗原理圖-2

3.3 設(shè)置鎖過期時(shí)間

我們也可以通過給鎖設(shè)置過期時(shí)間,讓其自動(dòng)解鎖。

如下所示,設(shè)置鎖 8 秒后自動(dòng)過期。

lock.lock(8, TimeUnit.SECONDS);

如果業(yè)務(wù)執(zhí)行時(shí)間超過 8 秒,手動(dòng)釋放鎖將會(huì)報(bào)錯(cuò),如下圖所示:

分散式鎖中的王者方案 - Redisson

所以我們?nèi)绻O(shè)置了鎖的自動(dòng)過期時(shí)間,則執(zhí)行業(yè)務(wù)的時(shí)間一定要小于鎖的自動(dòng)過期時(shí)間,否則就會(huì)報(bào)錯(cuò)。

四、王者方案

上一篇我講解了分布式鎖的五種方案:Redis 分布式鎖|從青銅到鉆石的五種演進(jìn)方案,這一篇主要是講解如何用 Redisson 在 Spring Boot 項(xiàng)目中實(shí)現(xiàn)分布式鎖的方案。

因?yàn)?Redisson 非常強(qiáng)大,實(shí)現(xiàn)分布式鎖的方案非常簡(jiǎn)潔,所以稱作王者方案。

原理圖如下:

分散式鎖中的王者方案 - Redisson

代碼如下所示:

// 1.設(shè)置分布式鎖
RLock lock = redisson.getLock("lock");
// 2.占用鎖
lock.lock();
// 3.執(zhí)行業(yè)務(wù)
...
// 4.釋放鎖
lock.unlock();

和之前 Redis 的方案相比,簡(jiǎn)潔很多。

下面講解下 Redisson 的其他幾種分布式鎖,相信大家在以后的項(xiàng)目中也會(huì)用到。

五、分布式讀寫鎖

基于 Redis 的 Redisson 分布式可重入讀寫鎖RReadWriteLock Java對(duì)象實(shí)現(xiàn)了java.util.concurrent.locks.ReadWriteLock接口。其中讀鎖和寫鎖都繼承了 RLock接口。

寫鎖是一個(gè)排他鎖(互斥鎖),讀鎖是一個(gè)共享鎖。

  • 讀鎖 + 讀鎖:相當(dāng)于沒加鎖,可以并發(fā)讀。
  • 讀鎖 + 寫鎖:寫鎖需要等待讀鎖釋放鎖。
  • 寫鎖 + 寫鎖:互斥,需要等待對(duì)方的鎖釋放。
  • 寫鎖 + 讀鎖:讀鎖需要等待寫鎖釋放。
分散式鎖中的王者方案 - Redisson

示例代碼如下:

RReadWriteLock rwlock = redisson.getReadWriteLock("anyRWLock");
// 最常見的使用方法
rwlock.readLock().lock();
// 或
rwlock.writeLock().lock();

另外Redisson還通過加鎖的方法提供了leaseTime的參數(shù)來指定加鎖的時(shí)間。超過這個(gè)時(shí)間后鎖便自動(dòng)解開了。

// 10秒鐘以后自動(dòng)解鎖
// 無需調(diào)用unlock方法手動(dòng)解鎖
rwlock.readLock().lock(10, TimeUnit.SECONDS);
// 或
rwlock.writeLock().lock(10, TimeUnit.SECONDS);

// 嘗試加鎖,最多等待100秒,上鎖以后10秒自動(dòng)解鎖
boolean res = rwlock.readLock().tryLock(100, 10, TimeUnit.SECONDS);
// 或
boolean res = rwlock.writeLock().tryLock(100, 10, TimeUnit.SECONDS);
...
lock.unlock();

六、分布式信號(hào)量

基于Redis的Redisson的分布式信號(hào)量(Semaphore)Java對(duì)象RSemaphore采用了與java.util.concurrent.Semaphore相似的接口和用法。同時(shí)還提供了異步(Async)、反射式(Reactive)和RxJava2標(biāo)準(zhǔn)的接口。

關(guān)于信號(hào)量的使用大家可以想象一下這個(gè)場(chǎng)景,有三個(gè)停車位,當(dāng)三個(gè)停車位滿了后,其他車就不停了??梢园衍囄槐茸餍盘?hào),現(xiàn)在有三個(gè)信號(hào),停一次車,用掉一個(gè)信號(hào),車離開就是釋放一個(gè)信號(hào)。

分散式鎖中的王者方案 - Redisson

我們用 Redisson 來演示上述停車位的場(chǎng)景。

先定義一個(gè)占用停車位的方法:

/**
* 停車,占用停車位
* 總共 3 個(gè)車位
*/
@ResponseBody
@RequestMapping("park")
public String park() throws InterruptedException {
  // 獲取信號(hào)量(停車場(chǎng))
  RSemaphore park = redisson.getSemaphore("park");
  // 獲取一個(gè)信號(hào)(停車位)
  park.acquire();

  return "OK";
}

再定義一個(gè)離開車位的方法:

/**
 * 釋放車位
 * 總共 3 個(gè)車位
 */
@ResponseBody
@RequestMapping("leave")
public String leave() throws InterruptedException {
    // 獲取信號(hào)量(停車場(chǎng))
    RSemaphore park = redisson.getSemaphore("park");
    // 釋放一個(gè)信號(hào)(停車位)
    park.release();

    return "OK";
}

為了簡(jiǎn)便,我用 Redis 客戶端添加了一個(gè) key:“park”,值等于 3,代表信號(hào)量為 park,總共有三個(gè)值。

分散式鎖中的王者方案 - Redisson

然后用 postman 發(fā)送 park 請(qǐng)求占用一個(gè)停車位。

分散式鎖中的王者方案 - Redisson

然後在 redis 用戶端查看 park 的值,發(fā)現(xiàn)已經(jīng)改為 2 了。繼續(xù)呼叫兩次,發(fā)現(xiàn) park 的等於 0,當(dāng)呼叫第四次的時(shí)候,會(huì)發(fā)現(xiàn)請(qǐng)求一直處於等待中,說明車位不夠了。如果想要不阻塞,可以用 tryAcquire 或 tryAcquireAsync。

我們?cè)賮砗艚须x開車位的方法,park 的值變成 1,代表車位剩餘 1 個(gè)。

注意:多次執(zhí)行釋放信號(hào)量操作,剩餘訊號(hào)量會(huì)一直增加,而不是到 3 後就封頂了。

其他分散式鎖定:

  • 公平鎖定(Fair Lock)

  • 聯(lián)鎖(MultiLock)

  • 紅鎖(RedLock)

  • 讀寫鎖定( ReadWriteLock)

  • 可過期性訊號(hào)量(PermitExpirableSemaphore)

  • #閉鎖(CountDownLatch)

分散式鎖中的王者方案 - Redisson

還有其他分散式鎖定就不在本篇展開了,有興趣的同學(xué)可以查看官方文件。

#

以上是分散式鎖中的王者方案 - Redisson的詳細(xì)內(nèi)容。更多資訊請(qǐng)關(guān)注PHP中文網(wǎng)其他相關(guān)文章!

本網(wǎng)站聲明
本文內(nèi)容由網(wǎng)友自願(yuàn)投稿,版權(quán)歸原作者所有。本站不承擔(dān)相應(yīng)的法律責(zé)任。如發(fā)現(xiàn)涉嫌抄襲或侵權(quán)的內(nèi)容,請(qǐng)聯(lián)絡(luò)admin@php.cn

熱AI工具

Undress AI Tool

Undress AI Tool

免費(fèi)脫衣圖片

Undresser.AI Undress

Undresser.AI Undress

人工智慧驅(qū)動(dòng)的應(yīng)用程序,用於創(chuàng)建逼真的裸體照片

AI Clothes Remover

AI Clothes Remover

用於從照片中去除衣服的線上人工智慧工具。

Clothoff.io

Clothoff.io

AI脫衣器

Video Face Swap

Video Face Swap

使用我們完全免費(fèi)的人工智慧換臉工具,輕鬆在任何影片中換臉!

熱工具

記事本++7.3.1

記事本++7.3.1

好用且免費(fèi)的程式碼編輯器

SublimeText3漢化版

SublimeText3漢化版

中文版,非常好用

禪工作室 13.0.1

禪工作室 13.0.1

強(qiáng)大的PHP整合開發(fā)環(huán)境

Dreamweaver CS6

Dreamweaver CS6

視覺化網(wǎng)頁開發(fā)工具

SublimeText3 Mac版

SublimeText3 Mac版

神級(jí)程式碼編輯軟體(SublimeText3)

熱門話題

Laravel 教程
1597
29
PHP教程
1488
72
分散式鎖:5個(gè)案例,從入門到入土 分散式鎖:5個(gè)案例,從入門到入土 Aug 24, 2023 pm 02:48 PM

今天跟大家分享的是分散式鎖,本文使用五個(gè)案例、圖、源碼分析等來分析。常見的synchronized、Lock等這些鎖都是基於單一JVM的實(shí)現(xiàn)的,如果分佈式場(chǎng)景下怎麼辦呢?這時(shí)候分散式鎖就出現(xiàn)了。

SpringBoot怎麼整合Redisson實(shí)現(xiàn)延遲隊(duì)列 SpringBoot怎麼整合Redisson實(shí)現(xiàn)延遲隊(duì)列 May 30, 2023 pm 02:40 PM

使用場(chǎng)景1、下單成功,30分鐘未支付。支付超時(shí),自動(dòng)取消訂單2、訂單簽收,簽收後7天未進(jìn)行評(píng)估。訂單超時(shí)未評(píng)價(jià),系統(tǒng)預(yù)設(shè)好評(píng)3、下單成功,商家5分鐘未接單,訂單取消4、配送超時(shí),推播簡(jiǎn)訊提醒…對(duì)於延時(shí)比較長(zhǎng)的場(chǎng)景、即時(shí)性不高的場(chǎng)景,我們可以採(cǎi)用任務(wù)調(diào)度的方式定時(shí)輪詢處理。如:xxl-job今天我們採(cǎi)

Redis實(shí)現(xiàn)分散式鎖的Etcd對(duì)比 Redis實(shí)現(xiàn)分散式鎖的Etcd對(duì)比 Jun 20, 2023 pm 05:51 PM

隨著分散式系統(tǒng)的逐漸普及,分散式鎖已成為確保系統(tǒng)穩(wěn)定性和資料一致性的重要手段。 Redis作為一款高效能的分散式記憶體資料庫,自然成為了分散式鎖的重要實(shí)作之一。但是,最近幾年,Etcd作為新興的分散式一致性解決方案,受到了越來越多的關(guān)注。本文將從實(shí)作原理、比較分析等方面探討Redis實(shí)現(xiàn)分散式鎖與Etcd的異同。 Redis實(shí)現(xiàn)分散式鎖的原理Redis分散式鎖的實(shí)

分散式鎖中的王者方案 - Redisson 分散式鎖中的王者方案 - Redisson Aug 24, 2023 pm 03:31 PM

如果你之前是在用 Redis 的話,那使用 Redisson 的話將會(huì)事半功倍,Redisson 提供了使用 Redis的最簡(jiǎn)單和最便捷的方法。 Redisson的宗旨是促進(jìn)使用者對(duì) Redis 的關(guān)注分離(Separation of Concern),讓使用者能夠?qū)⒕Ω械胤旁谔幚順I(yè)務(wù)邏輯上。

Java API 開發(fā)中使用 ZooKeeper 進(jìn)行分散式鎖定處理 Java API 開發(fā)中使用 ZooKeeper 進(jìn)行分散式鎖定處理 Jun 17, 2023 pm 10:36 PM

隨著現(xiàn)代應(yīng)用程式的不斷發(fā)展和對(duì)高可用性和並發(fā)性的需求日益增長(zhǎng),分散式系統(tǒng)架構(gòu)變得越來越普遍。在分散式系統(tǒng)中,多個(gè)進(jìn)程或節(jié)點(diǎn)同時(shí)運(yùn)作並共同完成任務(wù),進(jìn)程之間的同步變得特別重要。由於分散式環(huán)境下許多節(jié)點(diǎn)可以同時(shí)存取共享資源,因此,在分散式系統(tǒng)中,如何處理並發(fā)和同步問題成為了一項(xiàng)重要的任務(wù)。在此方面,ZooKeeper已經(jīng)成為了一個(gè)非常流行的解決方案。 ZooKee

Java?Redis?Redisson設(shè)定實(shí)例分析 Java?Redis?Redisson設(shè)定實(shí)例分析 Apr 25, 2023 am 08:19 AM

所需的Mavenorg.springframework.bootspring-boot-starter-data-redisio.lettucelettuce-coreredis.clientsjedisorg.springframework.sessionspring-session-data-redisorg.redissonredisson3.17.5application-redis。 6379密碼

了解 Redisson 快取技術(shù) 了解 Redisson 快取技術(shù) Jun 21, 2023 am 09:54 AM

Redisson是一種基於Redis的Java應(yīng)用程式快取解決方案。它提供了許多有用功能,使得在Java應(yīng)用程式中使用Redis作為快取變得更加方便和高效。 Redisson提供的快取功能包括:1.分散式映射(Map):Redisson提供了一些用於建立分散式映射的API。這些映射可以包含鍵值對(duì)、哈希表項(xiàng)或?qū)ο?,它們可以支援在多個(gè)節(jié)點(diǎn)之間共

Redis實(shí)現(xiàn)分散式鎖詳解 Redis實(shí)現(xiàn)分散式鎖詳解 Jun 21, 2023 am 11:02 AM

隨著行動(dòng)互聯(lián)網(wǎng)的快速發(fā)展和資料量的爆炸性成長(zhǎng),分散式系統(tǒng)變得越來越普及。在分散式系統(tǒng)中,並發(fā)操作的問題就變得越來越凸顯,當(dāng)多個(gè)執(zhí)行緒同時(shí)請(qǐng)求共享資源時(shí),就需要對(duì)這些資源進(jìn)行加鎖,確保資料的一致性。分散式鎖是實(shí)現(xiàn)分散式系統(tǒng)並發(fā)操作的有效方案之一,本文將詳細(xì)介紹如何使用Redis實(shí)現(xiàn)分散式鎖。 Redis基礎(chǔ)Redis是一個(gè)基於記憶體的鍵值對(duì)儲(chǔ)存系統(tǒng),正在分佈

See all articles