クラス RedisLockRegistry
java.lang.ObjectSE
org.springframework.integration.redis.util.RedisLockRegistry
- 実装されているすべてのインターフェース:
DisposableBean、ExpirableLockRegistry<DistributedLock>、LockRegistry<DistributedLock>、RenewableLockRegistry<DistributedLock>
public final class RedisLockRegistry
extends ObjectSE
implements ExpirableLockRegistry<DistributedLock>, DisposableBean, RenewableLockRegistry<DistributedLock>
Redis を使用して分散ロックを提供する
ExpirableLockRegistry の実装。ロックは、キー registryKey:lockKey に保存されます。ロックは(デフォルトでは 60)秒後に期限切れになります。期限切れのロックのロックを解除するスレッドは、IllegalStateExceptionSE を取得します。保護されたリソースが危険にさらされた可能性があるため、これは重大なエラーと見なす必要があります。ロックは再入可能です。
ただし、ロックはレジストリによってスコープが設定されます。同じキーを持つ異なるレジストリからのロック (レジストリが同じ "registryKey" を使用している場合でも) は異なるロックであり、最初のロックがロックされている間は、同じスレッドで 2 番目のロックを取得することはできません。
注: これは、低遅延アプリケーションを対象としていません。これは、複数の JVM 間でのリソースロックを目的としています。
ConditionSE はサポートされていません。
- 導入:
- 4.0
- 作成者:
- Gary Russell, Konstantin Yakimov, Artem Bilan, Vedran Pavic, Unseok Kim, Anton Gabov, Christian Tzolov, Eddie Cho, Myeonghyeon Lee, Roman Zabaluev, Alex Peelman, Youbin Wu, Michal Domagala, Severin Kistler
ネストされたクラスの要約
ネストされたクラスコンストラクターの概要
コンストラクターコンストラクター説明RedisLockRegistry(RedisConnectionFactory connectionFactory, StringSE registryKey) デフォルト (60 秒) のロック有効期限でロックレジストリを作成します。RedisLockRegistry(RedisConnectionFactory connectionFactory, StringSE registryKey, long expireAfter) 指定されたロック有効期限でロックレジストリを作成します。RedisLockRegistry(RedisConnectionFactory connectionFactory, StringSE registryKey, DurationSE expireAfter) 指定されたロック有効期限でロックレジストリを作成します。メソッドのサマリー
修飾子と型メソッド説明voiddestroy()voidexpireUnusedOlderThan(long age) 現在ロックされていない「年齢」より前に最後に取得されたロックを削除します。パラメーターオブジェクトに関連付けられたロックを取得します。voidロックの存続時間を更新すると、パラメーターオブジェクトに関連付けられます。voidrenewLock(ObjectSE lockKey, DurationSE ttl) ロックの有効期間を更新し、特定の値を持つパラメーターオブジェクトに関連付けます。voidsetCacheCapacity(int cacheCapacity) キャッシュされたロックの容量を設定します。voidsetExecutor(ExecutorSE executor) ExecutorSE を設定します。指定されていない場合は、デフォルトのキャッシュされたスレッドプール Executor が使用されます。voidsetIdleBetweenTries(DurationSE idleBetweenTries) obtainLock の試行の間にスリープするDurationSE を指定します。voidsetRedisLockType(RedisLockRegistry.RedisLockType redisLockType) で動作するようにRedisLockRegistry.RedisLockTypeモードを設定します。voidsetRenewalTaskScheduler(TaskScheduler renewalTaskScheduler) 更新タスクに使用するTaskSchedulerを設定します。クラス java.lang.ObjectSE から継承されたメソッド
clone, equalsSE, finalize, getClass, hashCode, notify, notifyAll, toString, wait, waitSE, waitSEインターフェース org.springframework.integration.support.locks.LockRegistry から継承されたメソッド
executeLocked, executeLocked, executeLocked, executeLocked
コンストラクターの詳細
RedisLockRegistry
デフォルト (60 秒) のロック有効期限でロックレジストリを作成します。- パラメーター:
connectionFactory- 接続ファクトリ。registryKey- ロックのキープレフィックス。
RedisLockRegistry
public RedisLockRegistry(RedisConnectionFactory connectionFactory, StringSE registryKey, long expireAfter) 指定されたロック有効期限でロックレジストリを作成します。- パラメーター:
connectionFactory- 接続ファクトリ。registryKey- ロックのキープレフィックス。expireAfter- ミリ秒単位の有効期限。
RedisLockRegistry
public RedisLockRegistry(RedisConnectionFactory connectionFactory, StringSE registryKey, DurationSE expireAfter) 指定されたロック有効期限でロックレジストリを作成します。- パラメーター:
connectionFactory- 接続ファクトリ。registryKey- ロックのキープレフィックス。expireAfter-DurationSE の有効期限。- 導入:
- 7.0
メソッドの詳細
setExecutor
ExecutorSE を設定します。指定されていない場合は、デフォルトのキャッシュされたスレッドプール Executor が使用されます。- パラメーター:
executor- エグゼキュータサービス- 導入:
- 5.0.5
setRenewalTaskScheduler
インターフェースからコピーされた説明:RenewableLockRegistry更新タスクに使用するTaskSchedulerを設定します。renewalTaskScheduler が設定されている場合、スレッドの動作中にロックが期限切れにならないように、ロックを定期的に更新するために使用されます。- 次で指定:
- インターフェース
RenewableLockRegistry<DistributedLock>のsetRenewalTaskScheduler - パラメーター:
renewalTaskScheduler- タスクスケジューラを更新する
setCacheCapacity
public void setCacheCapacity(int cacheCapacity) キャッシュされたロックの容量を設定します。- パラメーター:
cacheCapacity- キャッシュされたロックの容量(デフォルトは 100_000)。- 導入:
- 5.5.6
setIdleBetweenTries
obtainLock の試行間のスリープ時間としてDurationSE を指定します。デフォルトは 100 ミリ秒です。- パラメーター:
idleBetweenTries-DurationSE は obtainLock の試行の間にスリープ状態になります。- 導入:
- 6.4.0
setRedisLockType
作業するRedisLockRegistry.RedisLockTypeモードを設定します。デフォルトでは、RedisLockRegistry.RedisLockType.SPIN_LOCKが使用され、すべての環境で動作します。マスター / レプリカ接続でない場合、RedisLockRegistry.RedisLockType.PUB_SUB_LOCKが推奨されるモードです。ネットワークのチャタリングが少なくなります。unlockType の型を設定し、ロック方法を選択します。- パラメーター:
redisLockType- で動作するRedisLockRegistry.RedisLockType。- 導入:
- 5.5.13
obtain
インターフェースからコピーされた説明:LockRegistryパラメーターオブジェクトに関連付けられたロックを取得します。- 次で指定:
- インターフェース
LockRegistry<DistributedLock>のobtain - パラメーター:
lockKey- ロックが関連付けられているオブジェクト。- 戻り値:
- 関連するロック。
expireUnusedOlderThan
public void expireUnusedOlderThan(long age) インターフェースからコピーされた説明:ExpirableLockRegistry現在ロックされていない「年齢」より前に最後に取得されたロックを削除します。- 次で指定:
- インターフェース
ExpirableLockRegistry<DistributedLock>のexpireUnusedOlderThan - パラメーター:
age- ロックが最後に取得されてからの時間。
destroy
public void destroy()- 次で指定:
- インターフェース
DisposableBeanのdestroy
renewLock
インターフェースからコピーされた説明:RenewableLockRegistryロックの存続時間を更新すると、パラメーターオブジェクトに関連付けられます。ロックは現在のスレッドによって保持される必要があります- 次で指定:
- インターフェース
RenewableLockRegistry<DistributedLock>のrenewLock - パラメーター:
lockKey- ロックが関連付けられているオブジェクト。
renewLock
インターフェースからコピーされた説明:RenewableLockRegistryロックの存続時間の更新は、特定の値を持つパラメーターオブジェクトに関連付けられます。ロックは現在のスレッドによって保持されている必要があります。- 次で指定:
- インターフェース
RenewableLockRegistry<DistributedLock>のrenewLock - パラメーター:
lockKey- ロックが関連付けられているオブジェクト。ttl- ロック状態データの特定の有効期間