自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

Redisson 分布式鎖源碼 11:Semaphore 和 CountDownLatch

開發(fā) 前端 分布式 Redis
Redisson 除了提供了分布式鎖之外,還額外提供了同步組件,Semaphore 和 CountDownLatch。

[[409707]]

前言

Redisson 除了提供了分布式鎖之外,還額外提供了同步組件,Semaphore 和 CountDownLatch。

1、Semaphore

意思就是在分布式場景下,只有 3 個憑證,也就意味著同時只會有三個線程執(zhí)行業(yè)務。

設置憑證

參數(shù)列表:

  • KEYS[1]:指定的 key 這里叫 semaphore
  • KEYS[2]:redisson_sc:{semaphore}
  • ARGV[1]:憑證數(shù) 3

這塊 lua 腳本相對簡單,直接設置一個 key 的 value 為 3。

獲取憑證

參數(shù)列表:

  1. KEYS[1]:指定的 key 這里叫 semaphore
  2. ARGV[1]:要獲取的憑證數(shù),默認 1

這段 lua 腳本就是:

  1. 獲取 key semaphore 的值
  2. 如果值大于等于 1(要獲取的憑證數(shù)),對值進行遞減
  3. 成功返回 1,失敗返回 0

如果成功獲取憑證,直接返回,沒有獲取到憑證,則自旋等待。

釋放憑證

釋放憑證直接對 Redis key 的值進行自增即可。

2、CountDownLatch

輸出內(nèi)容如下:

源碼分析

設置門閂數(shù)量

這塊都大同小異。

減少門閂數(shù)量

就是對這個值進行遞減。

而 latch.await() 就是自旋獲取門閂的值,直到為 0 了,然后繼續(xù)往下執(zhí)行。

3、總結

Redisson 實現(xiàn)分布式的 Semaphore 和 CountDownLatch 基本內(nèi)容就是如此,僅僅通過在 Redis 維護一個公共的變量,然后進行原子更新即可。

本文轉載自微信公眾號「程序員小航」,可以通過以下二維碼關注。轉載本文請聯(lián)系程序員小航公眾號。

 

責任編輯:武曉燕 來源: 程序員小航
相關推薦

2021-07-06 08:37:29

Redisson分布式

2021-06-30 14:56:12

Redisson分布式公平鎖

2021-07-02 08:51:09

Redisson分布式鎖公平鎖

2022-08-04 08:45:50

Redisson分布式鎖工具

2021-07-01 09:42:08

Redisson分布式

2022-06-30 08:04:16

Redis分布式鎖Redisson

2021-06-27 21:24:55

RedissonJava數(shù)據(jù)

2021-06-28 10:51:55

Redisson分布式鎖Watchdog

2021-07-16 07:57:34

ZooKeeperCurator源碼

2021-07-03 17:45:57

分布式Redisson MultiLock

2021-09-17 07:51:24

RedissonRedis分布式

2024-01-02 13:15:00

分布式鎖RedissonRedis

2023-08-27 22:13:59

Redisson分布式緩存

2023-09-04 08:12:16

分布式鎖Springboot

2019-06-19 15:40:06

分布式鎖RedisJava

2025-03-25 10:29:52

2021-07-08 09:21:17

ZooKeeper分布式鎖 Curator

2021-07-09 06:48:31

ZooKeeperCurator源碼

2019-02-26 09:51:52

分布式鎖RedisZookeeper

2018-07-17 08:14:22

分布式分布式鎖方位
點贊
收藏

51CTO技術棧公眾號