TGViewer
Бодрый кодер Бодрый кодер @bodrcoder · 576 subscribers
Post #532 531
В продолжении поста про PostgreSQL, поделюсь про Redis. Чаще всего используют только строку, но он гораздо многообразнее.

🧱 String
— Ключ-значение, базовый кирпич. Кэш, флаги, счётчики, токены.
— Пример: SET key val, GET key, INCR views, SETNX, EXPIRE key 60
— Паттерны: rate-limit (`INCR + EXPIRE`), простые распределённые блокировки (`SET lock val NX PX 10000`)

🧩 Hash
— «Объект» с полями: компактно хранит мелкие атрибуты.
— Пример: HSET user:42 name Lev email lev@..., HGETALL user:42
— Когда: профили пользователей, настройки. Плюс — частичные обновления полей.
— Нюанс: нет TTL на отдельные поля, ставится на весь ключ.

📚 List
— Упорядоченная коллекция. Очереди (FIFO/LIFO), буферы, журналы.
— Пример: LPUSH queue job1, BRPOP queue 0
— Когда: простые очереди, ретраи. Не забывайте LTRIM для ограничения длины.

🏷 Set
— Множества без дубликатов. Теги, интересы, подписки.
— Пример: SADD tags:post:1 go devops, SINTER user:42:tags post:1:tags
— Когда: рекомендации по пересечению множеств, дедупликация.

🏆 Sorted Set (ZSet)
— Множество с весом (score). Рейтинги, приоритизация, «календарь по времени».
— Пример: ZADD leaderboard 1500 user42, ZRANGE leaderboard 0 9 WITHSCORES
— Когда: топ-N, очереди с приоритетом, time-index (`score = timestamp`).
— Хитрость: чистка старых данных — ZREMRANGEBYSCORE.

🧮 Bitmap
— Битовые флаги по смещению. Ультра-дешёвая памятью аналитика по дням.
— Примеры SETBIT active:2025-09-10 42 1, BITCOUNT active:*
— Когда: «приходил ли пользователь в день D», воронки по дням, календари активности.

📏 Bitfield
— Упакованные счётчики/флаги в одном ключе.
— Пример: BITFIELD key INCRBY u8 10 1
— Когда: компактные счётчики для ограниченного диапазона (экономия памяти).

🔢 HyperLogLog
— Приблизительное количество уникальных (distinct).
— Пример: PFADD u:visits user42, PFCOUNT u:visits
— Когда: уникальные посетители/поисковые запросы, где допустима погрешность.

📍 GEO (геоиндексы)
— Геопоиск по радиусу/полигону.
— Пример: GEOADD places 13.405 52.52 berlin, GEOSEARCH places FROMLONLAT 13.4 52.5 BYRADIUS 5 km
— Когда: «что рядом», ближайшие точки интереса.

📨 Streams
— Лог событий с потребительскими группами (Kafka-лайт).
— Пример: XADD events * type=signup user=42, XREADGROUP GROUP g c COUNT 10 STREAMS events >
— Когда: event sourcing, обработка событий с подтверждениями.

📣 Pub/Sub
— Эфемерные сообщения «здесь и сейчас».
— Пример: PUBLISH chan msg, SUBSCRIBE chan
— Когда: оповещения в реальном времени, без хранения истории (не путать со Streams).

🧾 RedisJSON (Redis 8+)
— Хранение JSON как дерево, выборка/патчи по путям.
— Пример: JSON.SET user:42 $ '{"name":"Lev","age":33}', JSON.NUMINCRBY user:42 $.age 1
— Когда: нужны частичные обновления и индексирование полей (с RediSearch).
— Альтернатива: String с сериализацией — просто, но без частичных апдейтов.

🧠 Итог
— В Redis выбор структуры = половина решения. Строка с JSON — ок для простого кэша, но для очередей, рейтингов, счётчиков и аналитики есть куда более точные инструменты.

#Redis #БД #Кэширование #Backend #Шпаргалка #DataEngineering
  • ❤ 6
  • 👍 5
  • 🔥 2
  • ❤‍🔥 1
More from @bodrcoder
  1. Sep 25, 2026Всех с пятницей. #пятничныйюмор
  2. Sep 24, 2026Думаю что сейчас будут все более популярны те сервисы, которые поддерживают MCP. Скоро Нов…
  3. Sep 22, 2026Разбирал вещи, очень сильно обрадовался что нашел сокровище. Но правда оказалась печальнее…
  4. Sep 17, 2026Купился на новый инференс uzu - который обещал гипер скорость на маке. Но я когда затащил…
  5. Sep 17, 2026Post #812
  6. Sep 17, 2026Кто каким стулом пользуется для работы? У меня в свое время самый удобный стул был - за 10…
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 →