layout: doc title: Connect over RESP description: Read PostgreSQL rows over RESP2 with redis-cli or Node.js. Includes authentication, client settings, runnable examples and cleanup. section: RESP permalink: /docs/resp.html

last_modified_at: “2026-09-16”

Connect over RESP

Use MGET to read cached PostgreSQL rows with a RESP2 client. Start the disposable demo with its RESP configuration:

docker compose -f examples/compose.yaml -f examples/compose.resp.yaml up --build --wait

This enables RESP on 127.0.0.1:56379. Recreating the demo discards its data. The token below is public and only for this local demo.

redis-cli

export REDISCLI_AUTH=DemoRespToken_0123456789abcdef0123456789
redis-cli -2 -p 56379 MGET 'CRUD:pglc_demo.public.items:{"id":42}'

The response contains row 42 as JSON. Missing rows return nil. redis-cli reads the token from REDISCLI_AUTH.

Node.js

npm --prefix examples/node-postgres ci --ignore-scripts
npm --prefix examples/node-postgres run resp

The example uses the official @redis/client package and checks order, duplicates, null input positions and missing rows. Its helper omits null keys on the wire and restores their positions after decoding. To connect from your application:

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();
}

Set PGLC_RESP_TOKEN to your server’s token. Keep this connection open across requests. These client settings select RESP2 and skip Redis-specific client metadata commands. Use token-only authentication, without a username or Redis database number.

RESP workers use one configured PostgreSQL role for all clients. For reads within a SQL transaction, use Node.js SQL or Go SQL. See the RESP reference for commands and limits.

Compare with SQL

The common benchmark runs RESP MGET, SQL mget and prepared SQL with the same keys and decoded results in both Node.js and Go. For broader application caching, read the PostgreSQL and Redis cache-aside guide.

Stop the demo

docker compose -f examples/compose.yaml -f examples/compose.resp.yaml down