Что такое Redis и для чего он используется?

Ответ

Redis (Remote Dictionary Server) — это высокопроизводительное хранилище данных типа «ключ-значение» (key-value store), работающее в оперативной памяти (in-memory). Это NoSQL база данных, поддерживающая различные структуры данных.

Ключевые особенности:

  • In-memory хранение: Обеспечивает чрезвычайно высокую скорость операций чтения/записи (микросекунды).
  • Структуры данных: Поддерживает не только строки, но и списки, множества, хеши, отсортированные множества, битовые массивы.
  • Персистентность: Может асинхронно сохранять данные на диск (снимки RDB или журнал AOF).
  • Срок жизни (TTL): Можно задать время автоматического удаления ключей.
  • Масштабируемость: Поддержка репликации (master-slave) и кластеризации.

Основные сценарии использования:

  1. Кэширование: Самый частый случай. Хранение результатов тяжелых запросов к БД или вычислений.
  2. Очереди сообщений: Использование структур List или Stream для организации брокера сообщений.
  3. Хранение сессий: Быстрый доступ к данным сессии пользователя.
  4. Счетчики и рейтинги: Благодаря атомарным операциям INCR.

Пример на Python (кэширование):

import redis

# Подключение
r = redis.Redis(host='localhost', port=6379, db=0)

# Запись значения с TTL (30 секунд)
r.setex('user:100:profile', 30, '{"name": "Alice"}')

# Чтение значения
profile = r.get('user:100:profile')
print(profile)  # b'{"name": "Alice"}'

Ответ 18+ 🔞

О, слушай, ну вот смотри, блядь. Есть такая штука — Redis. Расшифровывается как Remote Dictionary Server, но это тебе, по сути, такая ебучая быстрая тумбочка в оперативке, где всё лежит по принципу «ключ-значение». Ну, типа, открыл ящик «сосиски» — там сосиски, открыл «пиво» — там пиво. NoSQL, короче, всё дела.

Чем он, сука, так хорош, что все его используют?

  • Всё в памяти: Ну, то есть не на жёстком диске, который тупит, как мартышлюшка, а прямо в оперативке. Скорость, блядь, — микросекунды, ты только успевай моргнуть. Записал — ёбнул, прочитал — получил.
  • Не только строки туда-сюда: Он же не дурак, он умный! В него можно и списки пихать, и хеши, и множества, и ещё какую хуйню. Не просто «ключ-строка», а «ключ-всякая-структура-данных».
  • Не боится вырубиться: Может, конечно, данные на диск скидывать, чтобы если свет вырубили — не всё пропало. Есть два способа: RDB (как фотка на память) и AOF (как дневник, где всё подряд записано).
  • Самоочистка: Ключу можно срок годности назначить. Поставил TTL на 5 минут — и через 5 минут его, блядь, как не бывало. Красота!
  • Расти может: Репликацию поддерживает (один главный, остальные — подхалимы), и в кластер собираться умеет.

А где его, этого извращенца, применяют?

  1. Кэширование — это его родная стихия, ёпта! Самый частый случай. Сделал тяжёлый запрос к основной базе — результат в Redis засунул. Потом, когда тот же запрос прилетает, не надо опять в ту базу лезть, ебать её в сраку, — достал из Redis и всё, пользователь счастлив.
  2. Очереди сообщений. Взял структуру List или Stream — и вот тебе простенький брокер сообщений, работает, как швейцарские часы.
  3. Сессии пользователей. Чтобы не таскать тяжёлые данные туда-сюда, кинул сессию в Redis — и она там лежит, быстрая и удобная.
  4. Счётчики, рейтинги, лайки. Там есть атомарные операции, вроде INCR, которые идеально для этого подходят. Нажал лайк — раз! — счётчик увеличился, и ни одна собака не проскочит между этим.

Вот, смотри, как на Python это выглядит (код не трогаю, он святой):

import redis

# Подключение
r = redis.Redis(host='localhost', port=6379, db=0)

# Запись значения с TTL (30 секунд)
r.setex('user:100:profile', 30, '{"name": "Alice"}')

# Чтение значения
profile = r.get('user:100:profile')
print(profile)  # b'{"name": "Alice"}'

Вот и вся магия, блядь. Записали профиль Алисы на 30 секунд, прочитали — работает. Проще пареной репы, а пользы — овердохуища. Главное — не забывать, что оперативка не резиновая, а то так и до OOM killer недалеко, чих-пых тебя в сраку.