TGViewer
Product Developer Product Developer @product_developer · 12K subscribers
Post #187 5.89K
Кеширование — это ответ!
…а какой был ваш вопрос?

Все любят кеши.
Упираетесь в БД по количеству запросов? Кеш!
Нужно быстрее отдавать данные? Кеш!

Но не все так просто.
В этом посте накидаю вопросов, на которые стоит ответить, если хотите добавить кеширующий слой.

1. Во-первых, кеш — это еще одна точка отказа.

Если кеш внешний, например Redis, то он вполне себе подвержен проблемам инфраструктурного характера: сеть, железки, «шумные соседи» на виртуалках, троттлинг отдельных компонентов по CPU.
А еще его нужно обслуживать: менять конфиги, обновлять с даунтаймом, …

Если ваше приложение уперлось в производительность БД, сможет ли оно выжить без кеша?
Как будете жить при недоступности Redis? Рейт-лимитер?
А насколько критично для потребителей получить отказ или задержку?

Если кеш in-memory, то как избежать повышенной нагрузки на БД при деплое?

Придется катить приложение очень медленно, канарейкой, поднимая новые поды пошагово.
Как гарантировать, что новый разработчик не задеплоит слишком быстро?

2. Во-вторых, кеш — это еще одно усложнение потоков данных.
Инвалидация кеша — одна из трёх главных проблем IT, после нейминга переменных и race condition.

Готово ли ваше приложение к eventual consistency?
В каких сценариях данные в БД меняются и когда инвалидировать кеш?

3. В-третьих, кеш — это доп. затраты на поддержку.
Допустим, через год появится ещё один сценарий изменения данных.
Как гарантировать, что новый разработчик не забудет инвалидировать кеш?
Опять же, сам редис и библиотеки надо обновлять.

4. В-четвёртых, кеш никогда не даёт 100% hit rate.
Придётся экспериментировать, какие данные кешировать, чтобы hit rate был хотя бы 80%+.

5. А точно ли кеш будет быстрее, чем в PgSQL?
Во всех современных БД есть встроенные механики кеширования, и умные люди долго их оттачивали.
Парочка пруфов: Can Postgres replace Redis as a cache? + Benchmark: Postgres as cache vs Redis

Наш пример:
— Есть PostgreSQL с 300 млн записей
— Есть хорошо оптимизированный запрос, который держит 2 млн RPM и отрабатывает за 8-10 мс в 99 перцентиле. Очевидно, это тайминги без похода на диск.
— Утилизация CPU на БД уже 60%+, поэтому вводим кеш для подстраховки от пиков

И что? Время ответа выросло до 20 мс!

————

К чему это я?
В большинстве случаев кеширование — очевидная, но не самая лучшая идея.
Это поможет как анастезия, но не решение корневой проблемы.

Более правильным решением будет расшивать БД:
— читать с реплики
— шардировать
— переезжать на другой тип СУБД, более подходящий под профиль нагрузки

Change my mind.
Medium Can Postgres replace Redis as a cache? I wanted to understand: Is Postgres as a cache a really good idea? Can it indeed replace Redis? That’s what I want to find out today.
  • 👍 29
  • 🔥 6
  • ❤ 2
More from @product_developer
  1. Sep 12, 2026Автономность команды. Больше = лучше? Обычно автономность преподносится как безусловное до…
  2. Sep 8, 2026Почему AI-агенты не заменят кожаных Disclaimer: постов будет 2, второй — «Почему заменят»…
  3. Sep 4, 2026Avito.Tech.Conf — 26 сентября, Москва, бесплатно Бесплатных конференций вам в ленту! Спике…
  4. Jul 30, 2026AI-агенты — это ответ! А какой был ваш вопрос? Все бегут в разработку через AI. Во-первых,…
  5. Jul 21, 2026Доставка смс в самолёт Сижу в самолёте. С интернетом, что само по себе — чудо, которое уже…
  6. Jul 20, 2026С этими вашими AI агентами мы снова попали на дикий запад Момент времени Т-4: Когда-то дав…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →