@alchemy.run/ redis
背后的Redis客户端 炼金术Redis的束缚。 无依赖的RESP客户端,其命令为有打出错误的Effect. 它通过节点和邦上的TCP或TLS连接.
npm install alchemy @alchemy.run/redis effect
你通常从捆绑中得到这个客户端. Fly.ReadWriteRedis 财务报告和审定财务报表 Railway.ReadWriteRedis 连接到他们部署的雷迪斯:
// src/api.ts
import * as Railway from "@alchemy.run/railway";
import * as Effect from "effect/Effect";
import * as HttpServerResponse from "effect/http/HttpServerResponse";
export const Site = Railway.Project("Site");
export const Cache = Railway.Redis("Cache", { project: Site });
export default class Api extends Railway.Service<Api>()(
"Api",
{ project: Site, main: import.meta.url, port: 3000 },
Effect.gen(function* () {
const cache = yield* Railway.ReadWriteRedis(Cache);
return {
fetch: Effect.gen(function* () {
const visits = yield* cache.incr("visits");
return yield* HttpServerResponse.json({ visits });
}).pipe(Effect.orDie),
};
}).pipe(Effect.provide(Railway.ReadWriteRedisHttp)),
) {}
用 URL 指向其它 Redis :
// src/cache.ts
import * as Redis from "@alchemy.run/redis";
import * as Config from "effect/Config";
import * as Effect from "effect/Effect";
const url = Config.String("REDIS_URL").pipe(
Effect.mapError(() => new Redis.UrlMissing({ name: "cache" })),
);
export const cache = Redis.makeReadWrite(url);
export const program = Effect.gen(function* () {
yield* cache.set("greeting", "hello", { ex: 60 });
return yield* cache.get("greeting");
});