Upload
mourhoon
View
421
Download
0
Embed Size (px)
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
Наш логотип там ↑