redis (dump 2015)

46
Redis — вообще, и кластер — в частности Георгий Бажуков

Upload: georgy-bazhukov

Post on 15-Jul-2015

141 views

Category:

Software


1 download

TRANSCRIPT

Page 1: Redis (Dump 2015)

Redis — вообще,и кластер — в частности

Георгий Бажуков

Page 2: Redis (Dump 2015)

Что есть Redis?

Key-value? ≈Memcached?

Page 3: Redis (Dump 2015)

Redis vs Memcached

Least recently used (LRU)

+/– +

Сохранность + –Типы данных + –

Page 4: Redis (Dump 2015)

Key-Value?

Key-Key - Value

Page 5: Redis (Dump 2015)

Key ∩ Key - Value

Page 6: Redis (Dump 2015)

Key[n] - Value

Page 7: Redis (Dump 2015)

Что это даёт?

Page 8: Redis (Dump 2015)

Как обычно используется

Ускоряем то, что едваползает:● кэш● сессии

Page 9: Redis (Dump 2015)
Page 10: Redis (Dump 2015)

Очередь

Page 11: Redis (Dump 2015)

Или так

Page 12: Redis (Dump 2015)

Fail

Page 13: Redis (Dump 2015)

Надежная очередь

Забери справа, положи влево.Сделал? – Удали!

Page 15: Redis (Dump 2015)
Page 16: Redis (Dump 2015)
Page 17: Redis (Dump 2015)

Очередь PubSub

Надёжность Масштабируемость

Легковесность Низкая связанность

Page 18: Redis (Dump 2015)

Посчитаем!

Page 19: Redis (Dump 2015)

Множества

Уникальность

Проверка

Объединение

Page 20: Redis (Dump 2015)

Неделя 1 Неделя 2

Page 21: Redis (Dump 2015)

Битовые операция

Page 22: Redis (Dump 2015)

Бита достаточно

user_id = offset

Page 23: Redis (Dump 2015)

Логическое “ИЛИ” по битовым строкам

Page 24: Redis (Dump 2015)

HyperLogLog

Page 25: Redis (Dump 2015)

HyperLogLog

● Мат. стат.● Магия● 12 кб

Page 26: Redis (Dump 2015)

HyperLogLog Нет объединений, пересечений

Битовые строки Бинарные данные

Множества Самое общее решение

Page 27: Redis (Dump 2015)

Кластер

Page 28: Redis (Dump 2015)

Отказоустойчивость?

Page 29: Redis (Dump 2015)

Sentinels (“стражи”)

Page 30: Redis (Dump 2015)

● Мониторинг состояния мастера и реплик

● Уведомления о том, что “всё не так”

● Автоматическая реконфигурация

… с версии 2.6

Чем заняты:

Page 31: Redis (Dump 2015)

Упал? Голосуем!

NODE_TIMEOUT

QUORUM “стражей”

Большинство

Page 32: Redis (Dump 2015)

SLAVEOF NO ONE

Page 33: Redis (Dump 2015)

Приоритеты “стражей”● Как давно общался с мастером.● Приоритет реплики.● Задержка реплики.● Run ID.

Page 34: Redis (Dump 2015)

Netsplit

Page 35: Redis (Dump 2015)

Fail

Page 36: Redis (Dump 2015)

Failover

Page 37: Redis (Dump 2015)

Теряем данные min-slaves-to-write

Page 38: Redis (Dump 2015)

Масштабируемость

Page 39: Redis (Dump 2015)

Кластер, которого нет

● Обещан в 2011-ом году.● Внезапный PubSub.● Sentinel c 2.6 для отказоустойчивости.● …● 2.8● …● 3.0?

Page 40: Redis (Dump 2015)

Долгожданный Redis 3

Page 41: Redis (Dump 2015)

Ноды общаются

Внутренний протокол

Клиент стал умнее

Page 42: Redis (Dump 2015)

Шардируем

Page 43: Redis (Dump 2015)

Считаем слот

Slot = CRC16(key) mod 16384

Page 44: Redis (Dump 2015)

“Ложка дёгтя”

Операции на многих ключах

Page 45: Redis (Dump 2015)

#HashTag

MSET {dump}.month March {dump}.year 2015

- на одной ноде

Page 46: Redis (Dump 2015)

bazhukov.net@_bugov

vcccccccccccccczhyujnnnnnn

Особое мнение кота