クラス RedisLockRegistry
java.lang.ObjectSE
org.springframework.integration.redis.util.RedisLockRegistry
- 実装されたすべてのインターフェース:
DisposableBean
、ExpirableLockRegistry
、LockRegistry
public final class RedisLockRegistry
extends ObjectSE
implements ExpirableLockRegistry, DisposableBean
Redis を使用して分散ロックを提供する
ExpirableLockRegistry
の実装。ロックは、キー registryKey:lockKey
に保存されます。ロックは(デフォルトでは 60)秒後に期限切れになります。期限切れのロックのロックを解除するスレッドは、IllegalStateException
SE を取得します。保護されたリソースが危険にさらされた可能性があるため、これは重大なエラーと見なす必要があります。ロックは再入可能です。
ただし、ロックはレジストリによってスコープされます。同じキーを持つ異なるレジストリからのロック(レジストリが同じ 'registryKey' を使用している場合でも)は異なるロックであり、最初のロックがロックされている間、2 番目のレジストリを同じスレッドで取得することはできません。
注: これは、低遅延アプリケーションを対象としていません。これは、複数の JVM 間でのリソースロックを目的としています。
Condition
SE はサポートされていません。
- 導入:
- 4.0
- 作成者:
- Gary Russell, Konstantin Yakimov, Artem Bilan, Vedran Pavic, Unseok Kim, Anton Gabov, Christian Tzolov, Eddie Cho, Myeonghyeon Lee, Roman Zabaluev
ネストされたクラスのサマリー
ネストされたクラスコンストラクターのサマリー
コンストラクターコンストラクター説明RedisLockRegistry
(RedisConnectionFactory connectionFactory, StringSE registryKey) デフォルト(60 秒)のロック有効期限でロックレジストリを構築します。RedisLockRegistry
(RedisConnectionFactory connectionFactory, StringSE registryKey, long expireAfter) 指定されたロックの有効期限を使用してロックレジストリを構築します。メソッドのサマリー
修飾子と型メソッド説明void
destroy()
void
expireUnusedOlderThan
(long age) 現在ロックされていない「年齢」より前に最後に取得されたロックを削除します。パラメーターオブジェクトに関連付けられたロックを取得します。void
setCacheCapacity
(int cacheCapacity) キャッシュされたロックの容量を設定します。void
setExecutor
(ExecutorSE executor) Executor
SE を設定します。指定されていない場合は、デフォルトのキャッシュされたスレッドプール Executor が使用されます。void
setRedisLockType
(RedisLockRegistry.RedisLockType redisLockType) で動作するようにRedisLockRegistry.RedisLockType
モードを設定します。クラス 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
- ミリ秒単位の有効期限。
メソッドの詳細
setExecutor
Executor
SE を設定します。指定されていない場合は、デフォルトのキャッシュされたスレッドプール Executor が使用されます。- パラメーター:
executor
- エグゼキュータサービス- 導入:
- 5.0.5
setCacheCapacity
public void setCacheCapacity(int cacheCapacity) キャッシュされたロックの容量を設定します。- パラメーター:
cacheCapacity
- キャッシュされたロックの容量(デフォルトは 100_000)。- 導入:
- 5.5.6
setRedisLockType
RedisLockRegistry.RedisLockType
モードを動作するように設定します。デフォルトでは、RedisLockRegistry.RedisLockType.SPIN_LOCK
が使用されます。すべての環境で動作します。RedisLockRegistry.RedisLockType.PUB_SUB_LOCK
は、マスター / レプリカ接続がない場合に推奨されるモードです。ネットワークのチャタリングが少なくなります。ロック解除型の型を設定し、ロック方法を選択します。- パラメーター:
redisLockType
- で動作するRedisLockRegistry.RedisLockType
。- 導入:
- 5.5.13
obtain
インターフェースからコピーされた説明:LockRegistry
パラメーターオブジェクトに関連付けられたロックを取得します。- 次で指定:
- インターフェース
LockRegistry
のobtain
- パラメーター:
lockKey
- ロックが関連付けられているオブジェクト。- 戻り値:
- 関連するロック。
expireUnusedOlderThan
public void expireUnusedOlderThan(long age) インターフェースからコピーされた説明:ExpirableLockRegistry
現在ロックされていない「年齢」より前に最後に取得されたロックを削除します。- 次で指定:
- インターフェース
ExpirableLockRegistry
のexpireUnusedOlderThan
- パラメーター:
age
- ロックが最後に取得されてからの時間。
destroy
public void destroy()- 次で指定:
- インターフェース
DisposableBean
のdestroy