Убрали Redis из стека и положили кэш в PostgreSQL — кто так делал?

Рейтинг: 51% · 4 голосов
SQL и NoSQL: PostgreSQL, MySQL, Redis, MongoDB, ClickHouse, ElasticSearch — проектирование схем, индексы, репликация и оптимизация запросов.
Ответить
Аватара пользователя
mlapi1093
Сообщения: 6
Зарегистрирован: Пн май 11, 2026 12:18 am

Убрали Redis из стека и положили кэш в PostgreSQL — кто так делал?

Сообщение mlapi1093 »

Читал несколько статей про то что в 2026 году Redis для кэширования уже не так нужен, и что PostgreSQL с UNLOGGED таблицами вполне справляется с той же задачей. У нас сейчас Redis 7.2 для сессий и кэша API-ответов (TTL 5-60 минут), нагрузка ~3000 RPS пиковая. Кто реально выпиливал Redis и клал кэш в Postgres? Какие подводные камни? Хочется упростить инфру — меньше сервисов, меньше точек отказа.
👍1 ❤️ 🔥1 😄 🤔2
✔ Лучший ответ сформирован автоматически — milana_flow
Делал такое полгода назад для кэша с TTL. Схема простая: CREATE UNLOGGED TABLE cache (key TEXT PRIMARY KEY, value JSONB, expires_at TIMESTAMPTZ); — плюс индекс на expires_at для чистки. UNLOGGED означает что при крэше данные теряются, но для кэша это ок. Чистка через: DELETE FROM cache WHERE expires_at < NOW(); — крон каждые 5 минут или фоновый воркер. На 1000 RPS кэш-запросов latency p99 вышел о…
Перейти к ответу →
Аватара пользователя
milana_flow
Сообщения: 3
Зарегистрирован: Пт май 15, 2026 11:39 pm

Re: Убрали Redis из стека и положили кэш в PostgreSQL — кто так делал?

Сообщение milana_flow »

✔ Лучший ответ — сформирован автоматически
Делал такое полгода назад для кэша с TTL. Схема простая: CREATE UNLOGGED TABLE cache (key TEXT PRIMARY KEY, value JSONB, expires_at TIMESTAMPTZ); — плюс индекс на expires_at для чистки. UNLOGGED означает что при крэше данные теряются, но для кэша это ок. Чистка через: DELETE FROM cache WHERE expires_at < NOW(); — крон каждые 5 минут или фоновый воркер. На 1000 RPS кэш-запросов latency p99 вышел около 3-4 мс, что для нашего случая абсолютно нормально. Redis давал 1-2 мс но при этом иногда зависал на RDB snapshot и давал спайки до 50 мс.
👍 ❤️1 🔥1 😄 🤔
Аватара пользователя
rodion1629
Сообщения: 3
Зарегистрирован: Чт май 14, 2026 2:10 pm

Re: Убрали Redis из стека и положили кэш в PostgreSQL — кто так делал?

Сообщение rodion1629 »

Не соглашусь что Redis больше не нужен. Для сессий и простого кэша — да, Postgres справится. Но если у вас pub/sub с тысячами подписчиков, Lua-скрипты, Streams, Sorted Sets для лидербордов — Postgres это плохая замена. Мы пробовали LISTEN/NOTIFY как замену pub/sub и уткнулись в ограничение: payload максимум 8000 байт, и нет гарантии доставки при высокой нагрузке. Пришлось вернуть Redis для этой части.
👍 ❤️ 🔥2 😄 🤔1
Аватара пользователя
savva6910
Сообщения: 3
Зарегистрирован: Вс май 24, 2026 1:43 pm

Re: Убрали Redis из стека и положили кэш в PostgreSQL — кто так делал?

Сообщение savva6910 »

@sec_researcher, Redis 8.6 кстати показал x5 throughput против 7.2 в бенчмарках (до 3.5M ops/sec с пайплайнингом). Если у вас уже Redis 8 — смысл убирать его вообще пропадает с точки зрения производительности. Переезд на Postgres-кэш оправдан если Redis у вас версии 6-7 и вы не хотите обновляться, или если инфра маленькая и лишний сервис реально в тягость.
👍2 ❤️ 🔥1 😄1 🤔
Аватара пользователя
codeweb9669
Сообщения: 1
Зарегистрирован: Ср май 13, 2026 3:34 am

Re: Убрали Redis из стека и положили кэш в PostgreSQL — кто так делал?

Сообщение codeweb9669 »

Мы сделали гибрид: Redis оставили только для rate limiting (там нужны атомарные инкременты и EXPIRE) и pub/sub. Всё остальное — UNLOGGED таблицы в Postgres. Итог: сэкономили на памяти (Redis жрал 12 GB под кэш), упростили бэкап-стратегию, меньше мониторить. Главный плюс — кэш можно джойнить с основными таблицами прямо в SQL, что иногда сильно упрощает логику.
👍1 ❤️1 🔥1 😄 🤔
Аватара пользователя
vadim9808
Сообщения: 2
Зарегистрирован: Вс май 17, 2026 3:39 am

Re: Убрали Redis из стека и положили кэш в PostgreSQL — кто так делал?

Сообщение vadim9808 »

@game_dev_andrey, Важный момент по UNLOGGED таблицам: они не реплицируются через streaming replication. Если у вас реплики для чтения и приложение иногда читает с реплики — кэш там будет пустой после рестарта или просто отсутствовать. Нужно либо писать кэш на каждый узел отдельно, либо мириться с cache miss на репликах. Для нас это было неожиданным сюрпризом в тестировании.
👍 ❤️2 🔥 😄 🤔1
Ответить
Поделиться темой: ✈ Telegram VK

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 0 гостей