国产av日韩一区二区三区精品,成人性爱视频在线观看,国产,欧美,日韩,一区,www.成色av久久成人,2222eeee成人天堂

Jadual Kandungan
1. Apakah itu Redisson? " >1. Apakah itu Redisson?
2.1 Memperkenalkan kebergantungan Maven " >2.1 Memperkenalkan kebergantungan Maven
2.2 Kelas konfigurasi tersuai" >2.2 Kelas konfigurasi tersuai
2.3 Kelas konfigurasi ujian" >2.3 Kelas konfigurasi ujian
3. Kunci reentrant yang diedarkan" > 3. Kunci reentrant yang diedarkan
3.1 Ujian kunci reentrant" >3.1 Ujian kunci reentrant
3.1.1 驗證一:可重入鎖是阻塞的嗎?
3.1.1 Pengesahan 1: Adakah kunci peserta semula menyekat?
3.1.2 驗證二:服務(wù)停了,鎖會釋放嗎?
3.2 看門狗原理" >3.2 看門狗原理
3.3 設(shè)置鎖過期時間" >3.3 設(shè)置鎖過期時間
四、王者方案" >四、王者方案
五、分布式讀寫鎖" >五、分布式讀寫鎖
六、分布式信號量" >六、分布式信號量
Rumah Java javaTutorial Penyelesaian raja antara kunci yang diedarkan - Redisson

Penyelesaian raja antara kunci yang diedarkan - Redisson

Aug 24, 2023 pm 03:31 PM
Kunci yang diedarkan redisson


Penyelesaian raja antara kunci yang diedarkan - Redisson

Terdapat pelbagai penyelesaian di Internet untuk melaksanakan kunci teragih di Redis, tetapi apakah penyelesaian raja?

Jawapannya ialah: Redisson.

Mari kita lihat dahulu apa yang dikatakan oleh tapak web rasmi Redis tentang kunci teragih:

Penyelesaian raja antara kunci yang diedarkan - Redisson

Dan versi Java rangka kerja kunci teragih ialah Redisson.

Kandungan praktikal ini akan berdasarkan projek sumber terbuka saya PassJava untuk menyepadukan Redisson.

Saya letak 后端前端、小程序都上傳到同一個倉庫里面了,大家可以通過 Github碼云lawatan. Alamatnya adalah seperti berikut:

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

Code Cloud: https://gitee.com/jayh2018/PassJava-Platform

Code Cloud: https://gitee.com/jayh2018/PassJava- Tutorial

: www.passjava.cn

Sebelum pertempuran sebenar, mari kita lihat dahulu prinsip penggunaan Redisson. ??

1. Apakah itu Redisson?

Jika anda pernah menggunakan Redis sebelum ini, anda akan mendapat hasil dua kali ganda dengan separuh usaha dengan menggunakan Redisson menyediakan cara yang paling mudah dan mudah untuk menggunakan Redis.

Tujuan Redisson adalah untuk mempromosikan pengasingan kebimbangan pengguna (Separation of Concern) tentang Redis, supaya pengguna boleh lebih menumpukan pada memproses logik perniagaan.

Redisson ialah Grid Data Dalam Memori Java yang dilaksanakan berdasarkan Redis.

Penyelesaian raja antara kunci yang diedarkan - Redisson
  • Rangka kerja Netty: Redisson mengguna pakai rangka kerja Netty berasaskan NIO, yang bukan sahaja boleh berfungsi sebagai pelanggan pemacu asas Redis, tetapi juga menyediakan fungsi sambungan untuk pelbagai konfigurasi Redis, dan boleh menyegerakkan arahan Redis . Fungsi penghantaran, penghantaran tak segerak, penghantaran aliran tak segerak atau penghantaran saluran paip, pemprosesan pelaksanaan skrip LUA, dan fungsi memproses hasil yang dikembalikan

  • Struktur data asas: Redis asli HashList,Set,String,Geo,HyperLogLog等數(shù)據(jù)結(jié)構(gòu)封裝為Java里大家最熟悉的映射(Map),列表(List),集(Set)通用對象桶(Object Bucket),地理空間對象桶(Geospatial Bucket),基數(shù)估計算法(HyperLogLog) dan struktur lain,

  • Struktur data teragih: Atas dasar ini, ia juga menyediakan pemetaan berbilang tempatan, pemetaan berbilang (LocalCachedMap), set tersusun (SortedSet), set diisih markah (ScoredSortedSet), set diisih kamus (LexSortedSet), baris gilir (Baris Gilir), baris gilir menyekat (Baris Gilir Penyekat), baris gilir sekatan bersempadan (Baris Gilir Penyekatan Terhad), Deque berganda, Deque Menyekat , Menyekat Baris Adil, Baris Tertunda, Penapis Mekar, AtomicLong, Nombor titik terapung Ketepatan Berganda Atom (AtomicDouble), BitSet dan struktur data teragih lain yang pada asalnya tidak ada pada Redis.

  • Kunci teragih: Redisson juga melaksanakan kunci teragih yang disebut dalam dokumen Redis LockSenario aplikasi yang lebih maju. Malah, Redisson tidak berhenti di situ berdasarkan kunci yang diedarkan, ia juga menyediakan MultiLock ), ReadWriteLock (ReadWriteLock), Kunci Adil, RedLock, Semaphore, Semaphore Boleh Luput (PermitExpirableSemaphore) dan Latch (CountDownLatch) Ini adalah komponen asas yang penting untuk aplikasi konkurensi tinggi berbilang benang. Melalui pelaksanaan penyelesaian aplikasi peringkat tinggi berdasarkan Redis, Redisson menjadi alat penting untuk membina sistem teragih. Lock這樣的更高階應(yīng)用場景。事實上Redisson并沒有不止步于此,在分布式鎖的基礎(chǔ)上還提供了聯(lián)鎖(MultiLock),讀寫鎖(ReadWriteLock)公平鎖(Fair Lock),紅鎖(RedLock)信號量(Semaphore),可過期性信號量(PermitExpirableSemaphore)閉鎖(CountDownLatch)這些實際當(dāng)中對多線程高并發(fā)應(yīng)用至關(guān)重要的基本部件。正是通過實現(xiàn)基于Redis的高階應(yīng)用方案,使Redisson成為構(gòu)建分布式系統(tǒng)的重要工具。

  • 節(jié)點:Redisson作為獨立節(jié)點可以用于獨立執(zhí)行其他節(jié)點發(fā)布到分布式執(zhí)行服務(wù)分布式調(diào)度服務(wù)

Nod: Redisson sebagai nod bebas boleh digunakan untuk melaksanakan secara bebas nod lain yang diterbitkan ke Perkhidmatan pelaksanaan Gaya Pengedaran dan <p data-tool="mdnice編輯器" style="margin-bottom: 20px;line-height: 1.8em;color: rgb(58, 58, 58);"></p> <ul class="list-paddingleft-2" data-tool="mdnice編輯器" style="margin-top: 8px;margin-bottom: 8px;padding-left: 25px;"> <li><section style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;color: rgb(1, 1, 1);">2. Integrate Redisson</section></li> <li>Spring Boot integration Redisson mempunyai dua penyelesaian: <section style="margin-top: 5px;margin-bottom: 5px;line-height: 26px;color: rgb(1, 1, 1);"></section> </li> </ul>Konfigurasi program. <p data-tool="mdnice編輯器" style="margin-bottom: 20px;line-height: 1.8em;color: rgb(58, 58, 58);"></p>????Konfigurasi mod fail. ????????Artikel ini memperkenalkan cara mengintegrasikan Redisson secara pemrograman. ??<h3 id="span-style-color-rgb-font-size-em-padding-left-px-border-left-px-solid-rgb-Memperkenalkan-kebergantungan-Maven-span"><span style="color: rgb(81, 81, 81);font-size: 1em;padding-left: 20px;border-left: 3px solid rgb(249, 191, 69);">2.1 Memperkenalkan kebergantungan Maven </span></h3> <p data-tool="mdnice編輯器" style="margin-bottom: 20px;line-height: 1.8em;color: rgb(58, 58, 58);">Perkenalkan kebergantungan maven redisson dalam pom.xml perkhidmatan mikro soalan passjava. </p><pre class='brush:php;toolbar:false;'>&lt;!-- https://mvnrepository.com/artifact/org.redisson/redisson --&gt; &lt;dependency&gt; &lt;groupId&gt;org.redisson&lt;/groupId&gt; &lt;artifactId&gt;redisson&lt;/artifactId&gt; &lt;version&gt;3.15.5&lt;/version&gt; &lt;/dependency&gt;</pre><h3 id="span-style-color-rgb-font-size-em-padding-left-px-border-left-px-solid-rgb-Kelas-konfigurasi-tersuai-span"><span style="color: rgb(81, 81, 81);font-size: 1em;padding-left: 20px;border-left: 3px solid rgb(249, 191, 69);">2.2 Kelas konfigurasi tersuai</span></h3><p data-tool="mdnice編輯器" style="margin-bottom: 20px;line-height: 1.8em;color: rgb(58, 58, 58);">Kod berikut ialah konfigurasi nod tunggal Redis. </p><pre class='brush:php;toolbar:false;'>@Configuration public class MyRedissonConfig { /** * 對 Redisson 的使用都是通過 RedissonClient 對象 * @return * @throws IOException */ @Bean(destroyMethod=&quot;shutdown&quot;) // 服務(wù)停止后調(diào)用 shutdown 方法。 public RedissonClient redisson() throws IOException { // 1.創(chuàng)建配置 Config config = new Config(); // 集群模式 // config.useClusterServers().addNodeAddress(&quot;127.0.0.1:7004&quot;, &quot;127.0.0.1:7001&quot;); // 2.根據(jù) Config 創(chuàng)建出 RedissonClient 示例。 config.useSingleServer().setAddress(&quot;redis://127.0.0.1:6379&quot;); return Redisson.create(config); } }</pre><h3 id="span-style-color-rgb-font-size-em-padding-left-px-border-left-px-solid-rgb-Kelas-konfigurasi-ujian-span"><span style="color: rgb(81, 81, 81);font-size: 1em;padding-left: 20px;border-left: 3px solid rgb(249, 191, 69);">2.3 Kelas konfigurasi ujian</span></h3><p data-tool="mdnice編輯器" style="margin-bottom: 20px;line-height: 1.8em;color: rgb(58, 58, 58);">Buat kaedah ujian unit baharu. </p><pre class='brush:php;toolbar:false;'>@Autowired RedissonClient redissonClient; @Test public void TestRedisson() { System.out.println(redissonClient); }</pre><p data-tool="mdnice編輯器" style="margin-bottom: 20px;line-height: 1.8em;color: rgb(58, 58, 58);">Kami menjalankan kaedah ujian ini dan mencetak redissonClient</p><pre class='brush:php;toolbar:false;'>org.redisson.Redisson@77f66138</pre><h2 id="span-style-display-inline-block-background-image-linear-gradient-rgb-rgb-background-position-initial-background-size-initial-background-repeat-initial-background-attachment-initial-background-origin-initial-background-clip-initial-color-rgb-padding-px-px-margin-right-px-height-Kunci-reentrant-yang-diedarkan-span"><span style="display: inline-block;background-image: linear-gradient(rgb(255, 255, 255) 60%, rgb(255, 177, 27) 40%);background-position: initial;background-size: initial;background-repeat: initial;background-attachment: initial;background-origin: initial;background-clip: initial;color: rgb(81, 81, 81);padding: 2px 13px;margin-right: 3px;height: 50%;"> 3. Kunci reentrant yang diedarkan</span></h2><h3 id="span-style-color-rgb-font-size-em-padding-left-px-border-left-px-solid-rgb-Ujian-kunci-reentrant-span"><span style="color: rgb(81, 81, 81);font-size: 1em;padding-left: 20px;border-left: 3px solid rgb(249, 191, 69);">3.1 Ujian kunci reentrant</span></h3><p data-tool="mdnice編輯器" style="margin-bottom: 20px;line-height: 1.8em;color: rgb(58, 58, 58);">Redisson px1 reentrant style based on:4scode reentrant distributed px;4 jejari sempadan: 4px;font-family: "Operator Mono", Consolas, Monaco, Menlo, monospace;word-break: break-all;color: rgb(155, 110, 35); 245, 227);padding: 3px;margin: 3px;">RLockImplementasi objek Javajava .util.concurrent.locks.Lockantara muka. Ia juga menyediakan antara muka standard tak segerak (Async), reflektif (Reaktif) dan RxJava2. RLockJava 對象實現(xiàn)了java.util.concurrent.locks.Lock接口。同時還提供了異步(Async)、反射式(Reactive)和RxJava2標(biāo)準(zhǔn)的接口。

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

我們用 passjava 這個開源項目測試下可重入鎖的兩個點:

  • (1)多個線程搶占鎖,后面鎖需要等待嗎?
  • (2)如果搶占到鎖的線程所在的服務(wù)停了,鎖會不會被釋放?

3.1.1 驗證一:可重入鎖是阻塞的嗎?

為了驗證以上兩點,我寫了個 demo 程序:代碼的流程就是設(shè)置WuKong-lock

@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";
}

Kami menggunakan projek sumber terbuka passjava untuk menguji dua titik penguncian masuk semula:

  • (1) Jika berbilang benang merampas kunci, adakah mereka perlu menunggu kunci berikutnya?
  • (2) Jika perkhidmatan di mana benang yang merampas kunci terletak berhenti, adakah kunci itu akan dilepaskan?

3.1.1 Pengesahan 1: Adakah kunci peserta semula menyekat?

Untuk mengesahkan dua perkara di atas, saya menulis program demo: proses kod adalah untuk menetapkan WuKong -lock mengunci, kemudian mengunci, mencetak ID benang, menunggu selama 10 saat dan kemudian melepaskan kunci, dan akhirnya mengembalikan respons: "uji kunci ok".

http://localhost:11000/question/v1/redisson/test/test-lock

Sahkan mata pertama dahulu dan gunakan dua permintaan http untuk menguji kunci preemption. ????URL yang diminta: ??
http://localhost:11000/question/v1/redisson/test/test-lock
Penyelesaian raja antara kunci yang diedarkan - Redisson

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

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

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

Penyelesaian raja antara kunci yang diedarkan - Redisson
  • 第一步:線程 A 在 0 秒時,搶占到鎖,0.1 秒后,開始執(zhí)行等待 10 s。
  • 第二步:線程 B 在 0.1 秒嘗試搶占鎖,未能搶到鎖(被 A 搶占了)。
  • 第三步:線程 A 在 10.1 秒后,釋放鎖。
  • 第四步:線程 B 在 10.1 秒后搶占到鎖,然后等待 10 秒后釋放鎖。

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

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

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

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

Penyelesaian raja antara kunci yang diedarkan - Redisson

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

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

Penyelesaian raja antara kunci yang diedarkan - Redisson

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

Penyelesaian raja antara kunci yang diedarkan - Redisson

3.2 看門狗原理

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

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

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

如下圖所示:

Penyelesaian raja antara kunci yang diedarkan - Redisson
看門狗原理圖-1

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

如下圖所示:

Penyelesaian raja antara kunci yang diedarkan - Redisson
看門狗原理圖-2

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

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

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

lock.lock(8, TimeUnit.SECONDS);

如果業(yè)務(wù)執(zhí)行時間超過 8 秒,手動釋放鎖將會報錯,如下圖所示:

Penyelesaian raja antara kunci yang diedarkan - Redisson

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

四、王者方案

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

因為 Redisson 非常強大,實現(xiàn)分布式鎖的方案非常簡潔,所以稱作王者方案

原理圖如下:

Penyelesaian raja antara kunci yang diedarkan - Redisson

代碼如下所示:

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

和之前 Redis 的方案相比,簡潔很多。

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

五、分布式讀寫鎖

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

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

  • 讀鎖 + 讀鎖:相當(dāng)于沒加鎖,可以并發(fā)讀。
  • 讀鎖 + 寫鎖:寫鎖需要等待讀鎖釋放鎖。
  • 寫鎖 + 寫鎖:互斥,需要等待對方的鎖釋放。
  • 寫鎖 + 讀鎖:讀鎖需要等待寫鎖釋放。
Penyelesaian raja antara kunci yang diedarkan - Redisson

示例代碼如下:

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

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

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

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

六、分布式信號量

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

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

Penyelesaian raja antara kunci yang diedarkan - Redisson

我們用 Redisson 來演示上述停車位的場景。

先定義一個占用停車位的方法:

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

  return "OK";
}

再定義一個離開車位的方法:

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

    return "OK";
}

為了簡便,我用 Redis 客戶端添加了一個 key:“park”,值等于 3,代表信號量為 park,總共有三個值。

Penyelesaian raja antara kunci yang diedarkan - Redisson

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

Penyelesaian raja antara kunci yang diedarkan - Redisson

Kemudian semak nilai park pada klien redis dan mendapati ia telah ditukar kepada 2. Teruskan membuat panggilan dua kali dan mendapati taman itu bersamaan dengan 0. Apabila panggilan keempat dibuat, anda akan mendapati permintaan telah berada di 等待中, menunjukkan bahawa tempat letak kereta tidak mencukupi. Jika anda ingin mengelak daripada menyekat, anda boleh menggunakan tryAcquire atau tryAcquireAsync.

Kami kemudian memanggil kaedah meninggalkan tempat letak kereta, dan nilai taman berubah kepada 1, bermakna ada 1 tempat letak kereta yang tinggal.

Nota: Jika operasi pelepasan semaphore dilakukan beberapa kali, semafor yang tinggal akan terus meningkat dan bukannya dihadkan selepas 3.

Kunci teragih lain:

  • Kunci Adil

  • MultiLock

  • Berkunci

    Kunci baca-tulis ( ReadWriteLock)

  • Semaphore Boleh Luput (PermitExpirableSemaphore )

Penyelesaian raja antara kunci yang diedarkan - RedissonSelak (CountDownLatch)

?????? dan kunci yang diedarkan tidak akan dikembangkan dalam artikel ini , berminat untuk Pelajar boleh melihat dokumen rasmi. ??????

Atas ialah kandungan terperinci Penyelesaian raja antara kunci yang diedarkan - Redisson. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn

Alat AI Hot

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

Video Face Swap

Video Face Swap

Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Tutorial PHP
1502
276
Kunci yang diedarkan: 5 kes, dari kemasukan ke pengebumian Kunci yang diedarkan: 5 kes, dari kemasukan ke pengebumian Aug 24, 2023 pm 02:48 PM

Apa yang saya ingin kongsikan dengan anda hari ini ialah kunci yang diedarkan Artikel ini menggunakan lima kes, gambar rajah, analisis kod sumber, dll. untuk menganalisis. Kunci biasa seperti disegerakkan dan Kunci semuanya dilaksanakan berdasarkan JVM tunggal Apakah yang perlu kita lakukan dalam senario yang diedarkan? Pada masa ini, kunci yang diedarkan muncul.

Bagaimana SpringBoot menyepadukan Redisson untuk melaksanakan baris gilir kelewatan Bagaimana SpringBoot menyepadukan Redisson untuk melaksanakan baris gilir kelewatan May 30, 2023 pm 02:40 PM

Senario penggunaan 1. Tempahan berjaya dibuat tetapi pembayaran tidak dibuat dalam masa 30 minit. Pembayaran tamat masa dan pesanan dibatalkan secara automatik 2. Pesanan telah ditandatangani dan tiada penilaian dilakukan selama 7 hari selepas ditandatangani. Jika pesanan tamat dan tidak dinilai, sistem lalai kepada penilaian positif 3. Pesanan dibuat dengan jayanya jika peniaga tidak menerima pesanan selama 5 minit, pesanan itu dibatalkan peringatan mesej teks dihantar... Untuk senario dengan kelewatan yang lama dan prestasi masa nyata yang rendah, kami boleh Gunakan penjadualan tugas untuk melaksanakan pemprosesan undian biasa. Contohnya: xxl-job Hari ini kita akan memilih

Perbandingan Etcd dalam Redis pelaksanaan kunci yang diedarkan Perbandingan Etcd dalam Redis pelaksanaan kunci yang diedarkan Jun 20, 2023 pm 05:51 PM

Dengan mempopularkan sistem teragih secara beransur-ansur, kunci teragih telah menjadi cara penting untuk memastikan kestabilan sistem dan konsistensi data. Sebagai pangkalan data memori teragih berprestasi tinggi, Redis secara semula jadi menjadi salah satu pelaksanaan penting kunci teragih. Walau bagaimanapun, dalam beberapa tahun kebelakangan ini, Etcd telah menerima lebih banyak perhatian sebagai penyelesaian ketekalan teragih yang muncul. Artikel ini akan membincangkan persamaan dan perbezaan antara pelaksanaan kunci teragih Redis dan Etcd dari aspek seperti prinsip pelaksanaan dan analisis perbandingan. Prinsip Redis melaksanakan kunci teragih Pelaksanaan kunci teragih Redis

Penyelesaian raja antara kunci yang diedarkan - Redisson Penyelesaian raja antara kunci yang diedarkan - Redisson Aug 24, 2023 pm 03:31 PM

Jika anda pernah menggunakan Redis sebelum ini, anda akan mendapat hasil dua kali ganda dengan separuh usaha dengan menggunakan Redisson menyediakan cara yang paling mudah dan mudah untuk menggunakan Redis. Tujuan Redisson adalah untuk mempromosikan pengasingan kebimbangan pengguna (Separation of Concern) daripada Redis, supaya pengguna boleh memberi lebih tumpuan kepada memproses logik perniagaan.

Menggunakan ZooKeeper untuk pemprosesan kunci teragih dalam pembangunan API Java Menggunakan ZooKeeper untuk pemprosesan kunci teragih dalam pembangunan API Java Jun 17, 2023 pm 10:36 PM

Memandangkan aplikasi moden terus berkembang dan keperluan untuk ketersediaan dan keselarasan yang tinggi berkembang, seni bina sistem teragih menjadi lebih biasa. Dalam sistem teragih, berbilang proses atau nod berjalan pada masa yang sama dan menyelesaikan tugas bersama-sama, dan penyegerakan antara proses menjadi sangat penting. Memandangkan banyak nod dalam persekitaran teragih boleh mengakses sumber yang dikongsi pada masa yang sama, cara menangani isu konkurensi dan penyegerakan telah menjadi tugas penting dalam sistem teragih. Dalam hal ini, ZooKeeper telah menjadi penyelesaian yang sangat popular. ZooKee

Analisis contoh konfigurasi Java Redis Redisson Analisis contoh konfigurasi Java Redis Redisson 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.ymlspring:redis:host2:2104.host2:2106 6379kata laluan

Ketahui tentang teknologi caching Redisson Ketahui tentang teknologi caching Redisson Jun 21, 2023 am 09:54 AM

Redisson ialah penyelesaian caching berasaskan Redis untuk aplikasi Java. Ia menyediakan banyak ciri berguna yang menjadikan penggunaan Redis sebagai cache dalam aplikasi Java lebih mudah dan cekap. Fungsi caching yang disediakan oleh Redisson termasuk: 1. Pemetaan teragih (Peta): Redisson menyediakan beberapa API untuk mencipta peta teragih. Peta ini boleh mengandungi pasangan nilai kunci, entri cincang atau objek dan ia boleh menyokong perkongsian antara berbilang nod.

Penjelasan terperinci tentang pelaksanaan kunci teragih dalam Redis Penjelasan terperinci tentang pelaksanaan kunci teragih dalam Redis Jun 21, 2023 am 11:02 AM

Dengan perkembangan pesat Internet mudah alih dan pertumbuhan pesat volum data, sistem yang diedarkan menjadi semakin popular. Dalam sistem yang diedarkan, masalah operasi serentak telah menjadi lebih dan lebih menonjol Apabila beberapa utas meminta sumber dikongsi pada masa yang sama, sumber ini perlu dikunci untuk memastikan konsistensi data. Kunci teragih ialah salah satu penyelesaian berkesan untuk melaksanakan operasi serentak dalam sistem teragih Artikel ini akan memperkenalkan secara terperinci cara menggunakan Redis untuk melaksanakan kunci teragih. Asas Redis Redis ialah sistem storan nilai kunci berasaskan memori yang diedarkan

See all articles