Подключение через RESP

Используйте MGET, чтобы читать кэшированные строки PostgreSQL клиентом RESP2. Сначала запустите временную демонстрацию с конфигурацией RESP:

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

Это включает RESP на 127.0.0.1:56379. При пересоздании демонстрации её данные удаляются. Приведённый ниже токен является публичным и предназначен только для этой локальной демонстрации.

redis-cli

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

Ответ содержит строку 42 в формате JSON. Для отсутствующих строк возвращается nil. redis-cli читает токен из REDISCLI_AUTH.

Node.js

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

Пример использует официальный пакет @redis/client и проверяет порядок, дубликаты, позиции входных null и отсутствующие строки. Его помощник исключает null-ключи из протокола и восстанавливает их позиции после декодирования. Для подключения из приложения:

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-транзакции используйте SQL Node.js или SQL Go. Сведения о командах и ограничениях см. в справочнике RESP.

Сравнение с SQL

Общий бенчмарк запускает RESP MGET, SQL mget и подготовленный SQL с одинаковыми ключами и декодированными результатами в Node.js и Go. Для более широкого кэширования приложения прочитайте руководство по cache-aside для PostgreSQL и Redis.

Остановите демонстрацию

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

Обновлено .