Redis
Зачем
Технология для хранилищ данных. NoSQL In memory store решение. Redis - Remote Dictionary Service in memory.
- Key Value хранилище
- Кеширование данных
- Дедубликация
- Session store
- Distributed lock
- Counter
- Rate limiter
- Ranking/leaderboard
- TODO
Функции
- RESP протокол
- Аунтентификация по IP, Password
- Разграничение доступа по операциям, ключам Access Control List (ACL)
- support by database RBAC Redis Enterprise
- Разграничение доступа по операциям, ключам Access Control List (ACL)
- Pub\Sub
- Типы данных
- List - упорядоченный список, отбор элементов по порядковому номеру или с конца\начала
- Streams - append-only log
- Каждая запись имеет уникальный идентификатор. По умолчанию идентификатор генерируется автоматически и включает в себя временную метку.
- Поэтому вы можете запрашивать диапазоны записей по времени или получать новые данные по мере их поступления в поток, как Unix команда «tail -f» читает лог-файл и замирает в ожидании новых данных.
- Sets - lists VS sets
- Sorted sets
- Hashes
- Redis Sentinel — это сервис, обеспечивающий создание распределённых систем
- Redis cluster
- TTL
- type key-value
- type Sorted sets ZSet by timestamp clear
- Транзакции
- Поиск
- Tag
- Полнотекстовый
Паттерны
- Индексирования ключей
- Паттерны индексирования
- Полнотекстовый поиск
Deployment
- персистентность
- RDB-файлы
- AOF на диск
- медленно при перезапуске, лучше использовать репликации на резервный сервер
- HA cluster
- Оценка системных требований
- когда на серверах Redis`а появляется дисковая активность, время ответа от нашего сервиса растет
- На некоторое время мы снизили частоту сохранения данных на диск
- Redis недоступен все время, пока он поднимает данные с диска (это логично, конечно), т.е. если вдруг у вас упал Redis-процесс, то до тех пор, пока вновь поднятый сервис не поднимет все свое состояние с диска, сервис отвечать не будет, даже если для вас отсутствие данных гораздо меньшая проблема чем недоступная БД.
- после внедрения шардинга стало слежение за доступностью оперативной памяти на Redis-серверах. Свободной памяти на серверах должно быть столько, чтобы при падении 1-2 Redis-машин нам хватило бы памяти для передачи всех данных на оставшиеся в бою сервера и продолжения работы до тех пор, пока вылетевшие сервера не вернутся в строй.
- Персистентность в программировании означает способность состояния существовать дольше, чем процесс, создавший его.
- В первую очередь, Redis умеет сохранять данные на диск. Можно настроить Redis так, чтобы данные вообще не сохранялись, сохранялись периодически по принципу copy-on-write, или сохранялись периодически и писались в журнал (binlog). Таким образом, всегда можно добиться требуемого баланса между производительностью и надежностью.
- redis-benchmark в тесте только пускать
- Репликация