iop202 redis in azure
TRANSCRIPT
![Page 1: IOP202 Redis in Azure](https://reader033.vdocuments.site/reader033/viewer/2022052912/55a05fb01a28ab522e8b46fa/html5/thumbnails/1.jpg)
DevCon•12// msdevcon.ru
#msdevcon
23-24 мая, 2012 г.
Microsoft
![Page 2: IOP202 Redis in Azure](https://reader033.vdocuments.site/reader033/viewer/2022052912/55a05fb01a28ab522e8b46fa/html5/thumbnails/2.jpg)
// DevCon•12
Redis в Microsoft Azure
Михаил Матвиенко
@mourhoon
Lead Developer at PENXY
![Page 3: IOP202 Redis in Azure](https://reader033.vdocuments.site/reader033/viewer/2022052912/55a05fb01a28ab522e8b46fa/html5/thumbnails/3.jpg)
#msdevcon
Простыми словами
Что такое Redis?
![Page 4: IOP202 Redis in Azure](https://reader033.vdocuments.site/reader033/viewer/2022052912/55a05fb01a28ab522e8b46fa/html5/thumbnails/4.jpg)
Что такое Redis?Redis это key-value хранилище с
открытым кодом. Работает с
5 основными типами данных:
Строки
Списки
Множества
Упорядоченные множества
Хэши
![Page 5: IOP202 Redis in Azure](https://reader033.vdocuments.site/reader033/viewer/2022052912/55a05fb01a28ab522e8b46fa/html5/thumbnails/5.jpg)
NoSQL
Работает в оперативной памяти
1 поток
Очень быстрый (~100,000 queries / sec)
Маленький footprint в памяти (30k lines)
Асинхронный backup на диск
Написан на ANSI C под Linux
Что такое Redis?
![Page 6: IOP202 Redis in Azure](https://reader033.vdocuments.site/reader033/viewer/2022052912/55a05fb01a28ab522e8b46fa/html5/thumbnails/6.jpg)
#msdevcon
Linux NoSQL Project on Azure
![Page 7: IOP202 Redis in Azure](https://reader033.vdocuments.site/reader033/viewer/2022052912/55a05fb01a28ab522e8b46fa/html5/thumbnails/7.jpg)
Fork-и, и прочие Linux API
int rdbSaveBackground(char *filename) {
pid_t childpid;
...
if ((childpid = fork()) == 0) {
int retval;
/* Child */
...
} else {
/* Parent */
![Page 8: IOP202 Redis in Azure](https://reader033.vdocuments.site/reader033/viewer/2022052912/55a05fb01a28ab522e8b46fa/html5/thumbnails/8.jpg)
Как запускать Redis на Azure
Startup taskCygwin
Win32 port (проблемы с производительностью)
Клиенты Redis на .NetServiceStack.Redis (ребята из Mono)
BookSleave (Stack Overflow)
![Page 9: IOP202 Redis in Azure](https://reader033.vdocuments.site/reader033/viewer/2022052912/55a05fb01a28ab522e8b46fa/html5/thumbnails/9.jpg)
#msdevcon
Но зачем?
Неужели это кому-нибудь нужно?
![Page 10: IOP202 Redis in Azure](https://reader033.vdocuments.site/reader033/viewer/2022052912/55a05fb01a28ab522e8b46fa/html5/thumbnails/10.jpg)
Сценарии использования
Выгодно для большого (> 30 запросов/сек)
количества запросов:Счетчики (Простые и уникальные)
Рейтинги
Очереди
Publish/Subscribe
Опциональный TTL на каждый ключ – Можно
использовать как кэш
![Page 11: IOP202 Redis in Azure](https://reader033.vdocuments.site/reader033/viewer/2022052912/55a05fb01a28ab522e8b46fa/html5/thumbnails/11.jpg)
Кто использует Redis:
![Page 12: IOP202 Redis in Azure](https://reader033.vdocuments.site/reader033/viewer/2022052912/55a05fb01a28ab522e8b46fa/html5/thumbnails/12.jpg)
Задача: сделать back-end для чата
В лабах MS
предлагают
делать так:
![Page 13: IOP202 Redis in Azure](https://reader033.vdocuments.site/reader033/viewer/2022052912/55a05fb01a28ab522e8b46fa/html5/thumbnails/13.jpg)
Нам виделось так:
![Page 14: IOP202 Redis in Azure](https://reader033.vdocuments.site/reader033/viewer/2022052912/55a05fb01a28ab522e8b46fa/html5/thumbnails/14.jpg)
Как сделать магию правильно?
Azure
Storage
Azure
Service Bus Memcache Redis
![Page 15: IOP202 Redis in Azure](https://reader033.vdocuments.site/reader033/viewer/2022052912/55a05fb01a28ab522e8b46fa/html5/thumbnails/15.jpg)
#msdevcon
Запуск redis в Azure
Демо
![Page 16: IOP202 Redis in Azure](https://reader033.vdocuments.site/reader033/viewer/2022052912/55a05fb01a28ab522e8b46fa/html5/thumbnails/16.jpg)
#msdevcon
Производительность и
масштабирование
![Page 17: IOP202 Redis in Azure](https://reader033.vdocuments.site/reader033/viewer/2022052912/55a05fb01a28ab522e8b46fa/html5/thumbnails/17.jpg)
Масштабирование Redis
Репликация (Master – Slave):Read scaling
High Availability
ШардированиеWrite scaling
Redis Cluster (alpha) – Resharding, Fault tolerance.
![Page 18: IOP202 Redis in Azure](https://reader033.vdocuments.site/reader033/viewer/2022052912/55a05fb01a28ab522e8b46fa/html5/thumbnails/18.jpg)
Внутренняя структура кластера
![Page 19: IOP202 Redis in Azure](https://reader033.vdocuments.site/reader033/viewer/2022052912/55a05fb01a28ab522e8b46fa/html5/thumbnails/19.jpg)
#msdevcon
Плюсы, минусы, подводные
камни.
![Page 20: IOP202 Redis in Azure](https://reader033.vdocuments.site/reader033/viewer/2022052912/55a05fb01a28ab522e8b46fa/html5/thumbnails/20.jpg)
Проблемы и ограничения
Память на узле может кончиться: политики
поведения
Disk persistence RDB-формат
AOF (append-only fashion)
Пока не все фичи для маштабирования работают из
коробки. Redis cluster не готов даже для Linux.
![Page 21: IOP202 Redis in Azure](https://reader033.vdocuments.site/reader033/viewer/2022052912/55a05fb01a28ab522e8b46fa/html5/thumbnails/21.jpg)
Поддержка Microsoft
Microsoft Open Technologies (Interoperability
@ Microsoft)Адаптирование проекта под Win32
Избавление от специфики fork-ов в резервном копировании
Адаптирование для Windows Azure – обещают
![Page 22: IOP202 Redis in Azure](https://reader033.vdocuments.site/reader033/viewer/2022052912/55a05fb01a28ab522e8b46fa/html5/thumbnails/22.jpg)
Краткое сравнение
SQLСкорость
Сотни/тысячи запросов в сек
ACID
Atomicity, Consistency, Isolation,
Durability
SQL синтаксис
Поддержка транзакций
Репликация
Требует lock-ов на кластер, чтобы
не утратить целостность. Долго.
RedisСкорость
Десятки тысяч запросов в сек
BASE
Basically Available, Soft state, Eventual
consistency
Ограниченный набор команд
Поддержка транзакций
Репликация
Благодаря работе в памяти на
порядки быстрее репликации SQL
![Page 23: IOP202 Redis in Azure](https://reader033.vdocuments.site/reader033/viewer/2022052912/55a05fb01a28ab522e8b46fa/html5/thumbnails/23.jpg)
Полезные материалы
Little Redis Book: http://tinyurl.com/cgm2zd3
Project Home: http://redis.io/
Redis Github: https://github.com/antirez/redis
![Page 24: IOP202 Redis in Azure](https://reader033.vdocuments.site/reader033/viewer/2022052912/55a05fb01a28ab522e8b46fa/html5/thumbnails/24.jpg)
#msdevcon
Lead Developer at PENXY
Mikhail Matvienko
Наш логотип там ↑