Всем привет, сегодня опишем возможности Redis, кажется когда…

Всем привет, сегодня опишем возможности Redis, кажется когда разработчик слышит слово «Redis», он сразу представляет себе `GET` и `SET`. Достали данные из тяжелой базы, положили в быструю память, профит. Но у Redis внутри спрятана целая мастерская.

Если вы используете Redis только для кэширования, это как на Ferrari, ездить за хлебом в соседний ларек. Вот несколько сценариев, где Redis раскрывается по-настоящему.

1. Лидерборды, которые не тормозят
Любой геймер знает боль: ты закрыл игру, ждешь обновления таблицы рекоротов, и приложение зависает.
В обычной базе данных посчитать топ-10 игроков из миллиона — это тяжелая операция сортировки. В Redis для этого есть Sorted Sets. Добавление нового счета и запрос топа занимают доли миллисекунды.

2. Распределенные блокировки (Mutex)
Представьте, что у вас работает 10 инстансов одного сервиса. Раз в час им всем нужно запустить тяжелую задачу очистки. Если запустятся все 10 — база ляжет.
Redis позволяет сделать «флажок» с помощью команды `SETNX` (Set if Not Exists). Кто первый успел поставить флажок — тот работает. Остальные видят, что ключ занят, и спят до следующего часа. Это атомарная операция, обмануть ее нельзя.

3. Пого-переменные (Rate Limiting)
Вам нужно ограничить пользователя: не более 10 запросов в секунду.
Вместо того чтобы писать каждую попытку в SQL-базу и считать их там, Redis делает это одной командой через скользящее окно. Это спасает ваши API от перегрузки, когда кто-то решит написать простенький скрипт для парсинга вашего сайта.

4. Настоящая очередь, которая не теряет задачи
Мы уже обсуждали Lists (`LPUSH`/`BRPOP`). Но настоящая магия начинается в Redis Streams. Это мини-Kafka внутри Redis.
Там есть группы потребителей. Если один воркер упал, подобрав задачу, Redis не удалит её. Она будет висеть в статусе «в работе». Другой воркер увидит, что коллега пропал, и заберет «зависшую» задачу себе. Ни одно сообщение не потеряется.

5. Геолокация на лету
В Redis встроены геодвижок. Вы можете закинуть туда координаты всех курьеров в городе и одной командой спросить: «Кто из них ближе всего к клиенту на улице Ленина?». Никаких PostGIS и тяжелых пространственных запросов. Идеально для такси, доставки еды или поиска ближайшего открытого банкомата.


Почему это работает?
Секрет Redis не только в том, что он «in-memory». Секрет в его атомарности. Поскольку Redis однопоточный, он выполняет команды строго по очереди. Вам не нужно бояться, что два процесса одновременно увеличат один и тот же счетчик и получится каша.

Redis — это оперативная память вашего приложения, вынесенная на отдельный сервер. И использовать её можно гораздо изобретательнее, чем просто как хранилище строк.
Просмотры: 108
Открыть в MAX Сообщить о неточности

Репосты публикации

Публикация канала

Сообщить о неточности

Опишите, что нужно исправить. Если есть источник, добавьте ссылку.

Вы покидаете datool.ru

Ссылка ведёт на внешний сайт. datool.ru не отвечает за его содержимое — проверьте адрес, прежде чем вводить пароли или платёжные данные.

Переход через 10 с

Перейти