通过 RESP 连接
使用 RESP2 客户端的 MGET 读取缓存的 PostgreSQL 行。通过 RESP 配置启动一次性演示:
docker compose -f examples/compose.yaml -f examples/compose.resp.yaml up --build --wait
这会在 127.0.0.1:56379 启用 RESP。重新创建演示会丢弃其数据。下方令牌是公开的,仅适用于本地演示。
redis-cli
export REDISCLI_AUTH=DemoRespToken_0123456789abcdef0123456789
redis-cli -2 -p 56379 MGET 'CRUD:pglc_demo.public.items:{"id":42}'
响应以 JSON 返回行 42。缺失行返回 nil。redis-cli 从 REDISCLI_AUTH 读取令牌。
Node.js
npm --prefix examples/node-postgres ci --ignore-scripts
npm --prefix examples/node-postgres run resp
示例使用官方 @redis/client 包,检查顺序、重复项、空输入位置和缺失行。辅助函数发送请求时省略空键,并在解码后恢复其位置。从应用连接:
import { createClient } from '@redis/client';
const client = createClient({
url: 'redis://127.0.0.1:56379',
password: process.env.PGLC_RESP_TOKEN,
RESP: 2,
disableClientInfo: true,
});
client.on('error', console.error);
await client.connect();
try {
const values = await client.mGet(['CRUD:pglc_demo.public.items:{"id":42}']);
const rows = values.map(value => value === null ? null : JSON.parse(value));
console.log(rows);
} finally {
await client.close();
}
将 PGLC_RESP_TOKEN 设置为服务器令牌。跨请求复用此连接。这些客户端配置选择 RESP2,并跳过 Redis 特有的客户端元数据命令。使用仅令牌认证,不要指定用户名或 Redis 数据库编号。
RESP 工作进程为所有客户端使用一个配置的 PostgreSQL 角色。如果需要在 SQL 事务内读取,请使用 Node.js SQL 或 Go SQL。支持的命令与限制见 RESP 参考。
与 SQL 比较
统一基准测试在 Node.js 和 Go 中使用相同的键与解码结果,运行 RESP MGET、SQL mget 与预备 SQL。更广泛的应用缓存场景,请阅读 PostgreSQL 与 Redis cache-aside 指南。
停止演示
docker compose -f examples/compose.yaml -f examples/compose.resp.yaml down
更新于 .