クラス RedisLockRegistry

java.lang.ObjectSE
org.springframework.integration.redis.util.RedisLockRegistry
実装されたすべてのインターフェース:
DisposableBeanExpirableLockRegistryLockRegistry

public final class RedisLockRegistry extends ObjectSE implements ExpirableLockRegistry, DisposableBean
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
  • コンストラクターの詳細

    • RedisLockRegistry

      public RedisLockRegistry(RedisConnectionFactory connectionFactory, StringSE registryKey)
      デフォルト(60 秒)のロック有効期限でロックレジストリを構築します。
      パラメーター:
      connectionFactory - 接続ファクトリ。
      registryKey - ロックのキープレフィックス。
    • RedisLockRegistry

      public RedisLockRegistry(RedisConnectionFactory connectionFactory, StringSE registryKey, long expireAfter)
      指定されたロックの有効期限を使用してロックレジストリを構築します。
      パラメーター:
      connectionFactory - 接続ファクトリ。
      registryKey - ロックのキープレフィックス。
      expireAfter - ミリ秒単位の有効期限。
  • メソッドの詳細

    • setExecutor

      public void setExecutor(ExecutorSE executor)
      ExecutorSE を設定します。指定されていない場合は、デフォルトのキャッシュされたスレッドプール Executor が使用されます。
      パラメーター:
      executor - エグゼキュータサービス
      導入:
      5.0.5
    • setCacheCapacity

      public void setCacheCapacity(int cacheCapacity)
      キャッシュされたロックの容量を設定します。
      パラメーター:
      cacheCapacity - キャッシュされたロックの容量(デフォルトは 100_000)。
      導入:
      5.5.6
    • setRedisLockType

      public void setRedisLockType(RedisLockRegistry.RedisLockType redisLockType)
      RedisLockRegistry.RedisLockType モードを動作するように設定します。デフォルトでは、RedisLockRegistry.RedisLockType.SPIN_LOCK が使用されます。すべての環境で動作します。RedisLockRegistry.RedisLockType.PUB_SUB_LOCK は、マスター / レプリカ接続がない場合に推奨されるモードです。ネットワークのチャタリングが少なくなります。ロック解除型の型を設定し、ロック方法を選択します。
      パラメーター:
      redisLockType - で動作する RedisLockRegistry.RedisLockType
      導入:
      5.5.13
    • obtain

      public LockSE obtain(ObjectSE lockKey)
      インターフェースからコピーされた説明: LockRegistry
      パラメーターオブジェクトに関連付けられたロックを取得します。
      次で指定:
      インターフェース LockRegistryobtain 
      パラメーター:
      lockKey - ロックが関連付けられているオブジェクト。
      戻り値:
      関連するロック。
    • expireUnusedOlderThan

      public void expireUnusedOlderThan(long age)
      インターフェースからコピーされた説明: ExpirableLockRegistry
      現在ロックされていない「年齢」より前に最後に取得されたロックを削除します。
      次で指定:
      インターフェース ExpirableLockRegistryexpireUnusedOlderThan 
      パラメーター:
      age - ロックが最後に取得されてからの時間。
    • destroy

      public void destroy()
      次で指定:
      インターフェース DisposableBeandestroy