Anton Sidorov homepage

Bookmark this to keep an eye on my project updates!

Follow me on GitHub

Redis

Зачем

Redis - Remote Dictionary Service in memory.

redis usecase redis structures

Функции

  • RESP протокол
  • Аунтентификация по IP, Password
  • Pub\Sub
  • Типы данных
    • List - упорядоченный список, отбор элементов по порядковому номеру или с конца\начала
    • Streams - append-only log
      • Каждая запись имеет уникальный идентификатор. По умолчанию идентификатор генерируется автоматически и включает в себя временную метку.
      • Поэтому вы можете запрашивать диапазоны записей по времени или получать новые данные по мере их поступления в поток, как Unix команда «tail -f» читает лог-файл и замирает в ожидании новых данных.
    • Sets - lists VS sets
    • Sorted sets
    • Hashes
  • Redis Sentinel — это сервис, обеспечивающий создание распределённых систем
  • Redis cluster
  • TTL
  • Транзакции
  • Поиск
    • Tag
    • Полнотекстовый

Паттерны

Deployment

HA нюансы:

  • когда на серверах Redis`а появляется дисковая активность, время ответа от нашего сервиса растет
  • На некоторое время мы снизили частоту сохранения данных на диск
  • Redis недоступен все время, пока он поднимает данные с диска (это логично, конечно), т.е. если вдруг у вас упал Redis-процесс, то до тех пор, пока вновь поднятый сервис не поднимет все свое состояние с диска, сервис отвечать не будет, даже если для вас отсутствие данных гораздо меньшая проблема чем недоступная БД.
  • после внедрения шардинга стало слежение за доступностью оперативной памяти на Redis-серверах. Свободной памяти на серверах должно быть столько, чтобы при падении 1-2 Redis-машин нам хватило бы памяти для передачи всех данных на оставшиеся в бою сервера и продолжения работы до тех пор, пока вылетевшие сервера не вернутся в строй.
    • Персистентность в программировании означает способность состояния существовать дольше, чем процесс, создавший его.
  • В первую очередь, Redis умеет сохранять данные на диск. Можно настроить Redis так, чтобы данные вообще не сохранялись, сохранялись периодически по принципу copy-on-write, или сохранялись периодически и писались в журнал (binlog). Таким образом, всегда можно добиться требуемого баланса между производительностью и надежностью.
  • redis-benchmark в тесте только пускать
  • Репликация

Obervability

  • Metrics
    • Индекс производительности: показатели производительности
    • Метрики памяти: Метрики памяти
    • Основные показатели деятельности: основные показатели деятельности
      • Cache Hit Ratio
      • TODO
    • Метрики персистентности: Метрики персистентности
    • Метрики ошибок: Метрики ошибок
  • Use Agent Zabbix