Skip to content

Redis

Redis support shared by persistence modules.

This module defines a Redis service that can send Redis commands and run Lua scripts. It does not create a Redis client itself; callers provide a send function from their client or connection pool. The module also provides helpers for describing Lua scripts, loading them once, and running them later by their cached Redis id.

5 exports Added in v4.0.0 Source

Constructors

make

Added in v4.0.0 Source

Creates a Redis service from a raw command sender.

Details

Lua scripts are loaded through SCRIPT LOAD, cached, and then invoked with EVALSHA.

Signature

declare const make: (...args: [options: {
  readonly send: <A = unknown>(command: string, ...args: readonly Array<string>) => Effect<A, RedisError>;
}]) => Effect<{
  readonly eval: <Config extends {
    readonly params: readonly Array<unknown>;
    readonly result: unknown;
  }>(script: Script<Config>) => (...params: Config["params"]) => Effect<Config["result"], RedisError>;
  readonly send: <A = unknown>(command: string, ...args: readonly Array<string>) => Effect<A, RedisError>;
}, never, never>

Errors

RedisError

Added in v4.0.0 Source

Error raised by Redis command or script execution.

Signature

declare class RedisError extends {
  readonly _tag: "RedisError";
  readonly cause: unknown;
} & YieldableError<this> {
  constructor(...args: [props: {
    readonly _tag?: "RedisError";
    readonly cause: unknown;
  }, options?: MakeOptions]);
  readonly "~effect/persistence/Redis/RedisError": "~effect/persistence/Redis/RedisError";
}

Scripting

script

Added in v4.0.0 Source

Constructs a typed Redis Lua script descriptor.

Details

The result type defaults to void and can be refined with withReturnType.

Signature

declare function script<Params extends readonly Array<any>>(f: (...params: Params) => readonly Array<unknown>, options: {
  readonly lua: string;
  readonly numberOfKeys: number | (...params: Params) => number;
}): Script<{
  params: Params;
  result: void;
}>

Script interface

Added in v4.0.0 Source

Typed descriptor for a Redis Lua script.

Details

It defines the Lua source, parameter-to-argument mapping, Redis key count, and result type used by Redis.eval.

Signature

interface Script<Config extends {
  readonly params: ReadonlyArray<unknown>;
  readonly result: unknown;
}> {
  readonly "~effect/persistence/Redis/Script": {
    readonly params: Config["params"];
    readonly result: Config["result"];
  };
  readonly lua: string;
  readonly numberOfKeys: (...params: Config["params"]) => number;
  readonly params: (...params: Config["params"]) => readonly Array<unknown>;
  withReturnType<Result>(): Script<{
    params: Config["params"];
    result: Result;
  }>;
}

Services

Redis

Added in v4.0.0 Source

Service for sending Redis commands and evaluating cached Lua scripts.

Signature

declare class Redis extends Shape<"effect/persistence/Redis", {
  readonly eval: <Config extends {
    readonly params: readonly Array<unknown>;
    readonly result: unknown;
  }>(script: Script<Config>) => (...params: Config["params"]) => Effect<Config["result"], RedisError>;
  readonly send: <A = unknown>(command: string, ...args: readonly Array<string>) => Effect<A, RedisError>;
}, this> {
  constructor(_: never);
}