Redisson訊號量和可過期性訊號量
阿新 • • 發佈:2021-01-09
技術標籤:Redis
一、訊號量概述
Redisson的分散式訊號量(Semaphore)Java物件 RSemaphore 採用了與 java.util.concurrent.Semaphore 相似的介面和用法。同時還提供了非同步(Async)、反射式(Reactive)和RxJava2標準的介面。
1.1 實踐
RSemaphore semaphore = redisson.getSemaphore("semaphore"); semaphore.acquire(); //或 semaphore.acquireAsync(); semaphore.acquire(23); semaphore.tryAcquire(); //或 semaphore.tryAcquireAsync(); semaphore.tryAcquire(23, TimeUnit.SECONDS); //或 semaphore.tryAcquireAsync(23, TimeUnit.SECONDS); semaphore.release(10); semaphore.release(); //或 semaphore.releaseAsync();
二、可過期性訊號量概述
Redisson可過期性訊號量(PermitExpirableSemaphore)是在RSemaphore物件的基礎上,為每個訊號增加了一個過期時間。每個訊號可以通過獨立的ID來辨識,釋放時只能通過提交這個ID才能釋放。它提供了非同步(Async)、反射式(Reactive)和RxJava2標準的介面。
2.1 實踐
RPermitExpirableSemaphore semaphore = redisson.getPermitExpirableSemaphore("mySemaphore"); String permitId = semaphore.acquire(); // 獲取一個訊號,有效期只有2秒鐘。 String permitId = semaphore.acquire(2, TimeUnit.SECONDS); // ... semaphore.release(permitId)```