hostprofi.ru
Подобрать хостинг
Термин·буква R

Redis-кэш

краткое определение

Redis (Remote Dictionary Server) — высокопроизводительное in-memory хранилище данных типа ключ-значение. Используется как кэш, брокер сообщений и база сессий. Хранит данные в RAM, что обеспечивает задержку <1 мс при операциях чтения/записи.

Redis (Remote Dictionary Server) — open-source in-memory хранилище данных, работающее в оперативной памяти. Поддерживает разнообразные структуры данных: строки, хеши, списки, множества, отсортированные множества, битмапы, HyperLogLog, потоки (Redis Streams). Используется преимущественно как кэш приложений, хранилище сессий, брокер сообщений (Pub/Sub) и бэкенд для очередей задач.

Структуры данных Redis

  • String — базовый тип: SET key value EX 3600 (с TTL 1 час). Используется для кэширования HTML-страниц, значений счётчиков, флагов.
  • Hash — объект с именованными полями: HSET user:42 name "Ivan" email "ivan@example.com". Удобен для хранения объектов с частичным обновлением.
  • List — двусвязный список с операциями LPUSH/RPUSH/LRANGE. Используется для очередей задач и хранения последних N событий.
  • Set / Sorted Set — множество уникальных элементов. Sorted Set добавляет числовой score — используется для рейтингов и лидербордов.
  • Stream — лог-подобная структура для потоковой обработки событий (Redis 5.0+). Аналог Kafka для небольших объёмов.
  • HyperLogLog — вероятностная структура для подсчёта уникальных элементов с погрешностью 0,81%, занимает максимум 12 КБ.

Производительность Redis

Redis выполняет 100 000–1 000 000 операций в секунду на одном ядре. Типичная задержка GET/SET: 0,1–1 мс при локальном соединении. Это на 2–3 порядка быстрее чтения из PostgreSQL или MySQL при cache miss, где даже простой SELECT занимает 1–10 мс с учётом сетевого обмена.

Redis использует однопоточную модель для выполнения команд — это исключает race conditions без блокировок. Redis 6.0 (2020) добавил I/O threading для параллельного чтения/записи данных из сети, не нарушая последовательность выполнения команд. Redis 7.0 добавил threading для нескольких команд (LMPOP, ZMPOP).

История

Redis создал Сальваторе Санфилиппо (Salvatore Sanfilippo, известный как @antirez) в 2009 году для нужд своего итальянского стартапа LLOOGG — системы аналитики в реальном времени. Первый публичный релиз вышел в марте 2009 года. Спонсоры: VMware (2010–2013), Pivotal (2013–2015), Redis Labs (2015–2021). В 2021 году Redis Labs переименована в Redis Inc. В марте 2024 года Redis сменил лицензию с BSD на SSPL + RSALv2 (non-open-source), что вызвало создание форка Valkey под BSD-лицензией при поддержке Linux Foundation.

Redis в хостинге

Типичные сценарии использования Redis на VPS:

  • Кэш страниц WordPress — плагины WP Redis, W3 Total Cache, Object Cache Pro хранят кэшированный HTML и результаты запросов к базе данных в Redis. Повторные запросы обслуживаются за 1–5 мс вместо 50–300 мс.
  • Сессии PHPsession.save_handler=redis в php.ini. Хранение сессий в Redis быстрее файловой системы и обязательно при горизонтальном масштабировании: несколько PHP-серверов читают сессии из общего Redis.
  • Rate limiting — подсчёт запросов с IP-адреса через INCR + EXPIRE. Атомарная операция без гонки данных.
  • Очереди задач — backend для Laravel Horizon, Sidekiq, Celery. Redis используется как брокер между веб-сервером и воркерами.

На что обращать внимание

Безопасность: Redis по умолчанию доступен без пароля. Всегда настраивать requirepass и bind 127.0.0.1 — порт 6379 не должен быть открыт в публичный интернет. Для восстановления после перезапуска включить AOF-персистентность: appendonly yes в redis.conf. Без персистентности все данные теряются при перезапуске сервера. Для кластеризации Redis поддерживает Redis Cluster (горизонтальное масштабирование) и connection pooling через Redis Sentinel (высокая доступность через автоматический failover).

Другие термины

Redis-кэш — что это, определение и как работает | Справочник — hostprofi.ru