IOP202 Redis in Azure

Preview:

Citation preview

DevCon•12// msdevcon.ru

#msdevcon

23-24 мая, 2012 г.

Microsoft

// DevCon•12

Redis в Microsoft Azure

Михаил Матвиенко

@mourhoon

Lead Developer at PENXY

#msdevcon

Простыми словами

Что такое Redis?

Что такое Redis?Redis это key-value хранилище с

открытым кодом. Работает с

5 основными типами данных:

Строки

Списки

Множества

Упорядоченные множества

Хэши

NoSQL

Работает в оперативной памяти

1 поток

Очень быстрый (~100,000 queries / sec)

Маленький footprint в памяти (30k lines)

Асинхронный backup на диск

Написан на ANSI C под Linux

Что такое Redis?

#msdevcon

Linux NoSQL Project on Azure

Fork-и, и прочие Linux API

int rdbSaveBackground(char *filename) {

pid_t childpid;

...

if ((childpid = fork()) == 0) {

int retval;

/* Child */

...

} else {

/* Parent */

Как запускать Redis на Azure

Startup taskCygwin

Win32 port (проблемы с производительностью)

Клиенты Redis на .NetServiceStack.Redis (ребята из Mono)

BookSleave (Stack Overflow)

#msdevcon

Но зачем?

Неужели это кому-нибудь нужно?

Сценарии использования

Выгодно для большого (> 30 запросов/сек)

количества запросов:Счетчики (Простые и уникальные)

Рейтинги

Очереди

Publish/Subscribe

Опциональный TTL на каждый ключ – Можно

использовать как кэш

Кто использует Redis:

Задача: сделать back-end для чата

В лабах MS

предлагают

делать так:

Нам виделось так:

Как сделать магию правильно?

Azure

Storage

Azure

Service Bus Memcache Redis

#msdevcon

Запуск redis в Azure

Демо

#msdevcon

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

масштабирование

Масштабирование Redis

Репликация (Master – Slave):Read scaling

High Availability

ШардированиеWrite scaling

Redis Cluster (alpha) – Resharding, Fault tolerance.

Внутренняя структура кластера

#msdevcon

Плюсы, минусы, подводные

камни.

Проблемы и ограничения

Память на узле может кончиться: политики

поведения

Disk persistence RDB-формат

AOF (append-only fashion)

Пока не все фичи для маштабирования работают из

коробки. Redis cluster не готов даже для Linux.

Поддержка Microsoft

Microsoft Open Technologies (Interoperability

@ Microsoft)Адаптирование проекта под Win32

Избавление от специфики fork-ов в резервном копировании

Адаптирование для Windows Azure – обещают

Краткое сравнение

SQLСкорость

Сотни/тысячи запросов в сек

ACID

Atomicity, Consistency, Isolation,

Durability

SQL синтаксис

Поддержка транзакций

Репликация

Требует lock-ов на кластер, чтобы

не утратить целостность. Долго.

RedisСкорость

Десятки тысяч запросов в сек

BASE

Basically Available, Soft state, Eventual

consistency

Ограниченный набор команд

Поддержка транзакций

Репликация

Благодаря работе в памяти на

порядки быстрее репликации SQL

Полезные материалы

Little Redis Book: http://tinyurl.com/cgm2zd3

Project Home: http://redis.io/

Redis Github: https://github.com/antirez/redis

#msdevcon

Lead Developer at PENXY

Mikhail Matvienko

Наш логотип там ↑