redlock-universal
    Preparing search index...

    Interface RedisAdapter

    Universal Redis adapter interface Abstracts differences between node-redis and ioredis

    interface RedisAdapter {
        atomicExtend(
            key: string,
            value: string,
            minTTL: number,
            newTTL: number,
        ): Promise<AtomicExtensionResult>;
        batchSetNX(
            keys: string[],
            values: string[],
            ttl: number,
        ): Promise<BatchAcquireResult>;
        del(key: string): Promise<number>;
        delIfMatch(key: string, value: string): Promise<boolean>;
        disconnect(): Promise<void>;
        extendIfMatch(key: string, value: string, ttl: number): Promise<boolean>;
        get(key: string): Promise<string | null>;
        inspect(key: string): Promise<LockInspection | null>;
        isConnected(): boolean;
        ping(): Promise<string>;
        setNX(key: string, value: string, ttl: number): Promise<string | null>;
    }

    Implemented by

    Index

    Methods

    • Atomic extension with TTL feedback and race condition protection

      Parameters

      • key: string

        Redis key

      • value: string

        Expected value

      • minTTL: number

        Minimum TTL required for extension (race condition protection)

      • newTTL: number

        New TTL to set in milliseconds

      Returns Promise<AtomicExtensionResult>

      Promise resolving to atomic extension result with TTL feedback

    • Atomically acquire multiple locks in a single operation All-or-nothing semantics: either all locks are acquired or none

      Parameters

      • keys: string[]

        Array of Redis keys to lock

      • values: string[]

        Array of values (one per key, same length as keys)

      • ttl: number

        Time to live in milliseconds for all locks

      Returns Promise<BatchAcquireResult>

      Promise resolving to batch acquisition result

      Error if keys and values arrays have different lengths

    • Delete key

      Parameters

      • key: string

        Key to delete

      Returns Promise<number>

      Promise resolving to number of deleted keys

    • Delete key only if value matches (atomic operation)

      Parameters

      • key: string

        Redis key

      • value: string

        Expected value

      Returns Promise<boolean>

      Promise resolving to true if deleted, false otherwise

    • Disconnect from Redis

      Returns Promise<void>

      Promise that resolves when disconnected

    • Extend TTL of a key only if value matches (atomic operation)

      Parameters

      • key: string

        Redis key

      • value: string

        Expected value

      • ttl: number

        New TTL in milliseconds

      Returns Promise<boolean>

      Promise resolving to true if extended, false otherwise

    • Get value by key

      Parameters

      • key: string

        Redis key

      Returns Promise<string | null>

      Promise resolving to value or null if not found

    • Atomically inspect a lock's current state Returns the lock value (owner) and remaining TTL in a single operation

      Parameters

      • key: string

        Redis key to inspect

      Returns Promise<LockInspection | null>

      Promise resolving to LockInspection if key exists, null otherwise

    • Ping Redis server

      Returns Promise<string>

      Promise resolving to 'PONG'

    • Set key with value if not exists, with TTL in milliseconds

      Parameters

      • key: string

        Redis key

      • value: string

        Value to set

      • ttl: number

        Time to live in milliseconds

      Returns Promise<string | null>

      Promise resolving to 'OK' on success, null if key exists