Upload
it-people
View
421
Download
1
Embed Size (px)
Citation preview
Redis — вообще,и кластер — в частности
Гоша Бажуков
bazhukov.net @_bugov
Что есть Redis?
Key-value? ≈Memcached?
Redis vs Memcached
Least recently used (LRU)
+/– +
Сохранность + –Типы данных + –
Key-Value?
Key-Key - Value
Key ∩ Key - Value
Key[n] - Value
Что это даёт?
Как обычно используется
Ускоряем то, что едваползает:● кэш● сессии
Очередь
Или так
Fail
Надежная очередь
Забери справа, положи влево.Сделал? – Удали!
Resque
PHP-Resque
python-rq
Очередь PubSub
Надёжность Масштабируемость
Легковесность Низкая связанность
Посчитаем!
Множества
Уникальность
Проверка
Объединение
Неделя 1 Неделя 2
Битовые операция
Бита достаточно
user_id = offset
Логическое “ИЛИ” по битовым строкам
HyperLogLog
HyperLogLog
● Мат. стат.● Магия● 12 кб
HyperLogLog Нет объединений, пересечений
Битовые строки Бинарные данные
Множества Самое общее решение
Кластер
Отказоустойчивость?
Sentinels (“стражи”)
● Мониторинг состояния мастера и реплик
● Уведомления о том, что “всё не так”
● Автоматическая реконфигурация
… с версии 2.6
Чем заняты:
Упал? Голосуем!
NODE_TIMEOUT
QUORUM “стражей”
Большинство
SLAVEOF NO ONE
Приоритеты “стражей”● Как давно общался с мастером.● Приоритет реплики.● Задержка реплики.● Run ID.
Netsplit
Fail
Failover
Теряем данные min-slaves-to-write
Масштабируемость
Кластер, которого нет
● Обещан в 2011-ом году.● Внезапный PubSub.● Sentinel c 2.6 для отказоустойчивости.● …● 2.8● …● 3.0?
Долгожданный Redis 3
Ноды общаются
Внутренний протокол
Клиент стал умнее
Шардируем
Считаем слот
Slot = CRC16(key) mod 16384
“Ложка дёгтя”
Операции на многих ключах
#HashTag
MSET {dump}.month March {dump}.year 2015
- на одной ноде
bazhukov.net @_bugov
vcccccccccccccczhyujnnnnnn
Особое мнение кота