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.
Constructors
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
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
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;
}>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
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);
}
Creates a
Redisservice from a raw command sender.Details
Lua scripts are loaded through
SCRIPT LOAD, cached, and then invoked withEVALSHA.