Мы уже пол года успешно используем Redis в своих highload проектах. За это время было выработано много удачных решений на Redis для задач, с которыми сталкиваются разработчики большинства крупных проектов. Примерами этих решений я и хотел бы поделиться на предстоящей DEVCONF, чтобы на практике показать возможности, преимущества и слабые стороны Redis.
Redis — краткий обзор (или Redis не просто key-value база данных):
Сравнение производительности и возможностей с другими хранилищами:
Подробнее о возможностях с примерами практического применения:
В заключение расскажу о предстоящих нововведениях, а также где, как и почему не стоит использовать Redis.
Если вы не остались равнодушными, голосуйте за доклад.
Redis — краткий обзор (или Redis не просто key-value база данных):
- Redis очень быстрый
- Типы данных: String, List, Set, Sorted set, Hash
- Атомарность операций
- Сохранность данных: Snapshot, Append-Only File (binlog)
- Транзакции
- Virtual Memory
- Master/Slave репликация
- Publish/Subscribe (очереди сообщений)
- Pipeline
- Redis Tools
- Клиенты (PHP, Ruby, Python, Erlang, Perl, Tcl, Java, Lua, C#, Javascript / Node.js, ...)
Сравнение производительности и возможностей с другими хранилищами:
- MySQL (InnoDB)
- Memcached
- Cassandra
- Tokyo Cabinet
- MongoDb
Подробнее о возможностях с примерами практического применения:
- Пространство ключей
Раздельное хранение ключей на одном Redis сервере. Базы для testing и development окружения. - String-value ключи
Уникальные идентификаторы, счетчики, сериализованные объекты. - Время жизни ключей
Кеширование, хранилище сессий. - Lists — упорядоченный список значений
Хранение списка ключей сериализованных объектов, простые очереди. - Sets — неупорядоченный набор уникальных значений
Теги, друзья, отложенные удаления, список онлайн пользователей, «страницу посетили». - Sorted Set — упорядоченный по весу набор уникальных значений
Голоса и рейтинг пользователей, автокомплит. - Hashes
Новый более подходящий способ для хранения и работы с сериализованными объектами. - Транзакции
Целостность и атомарность выполнения набора команд. - Publish/Subscribe
Очереди, чат. - Pipeline
Быстрое выполнение набора команд. - Отказоустойчивость и сохранность данных
Бесперебойная работа и гарантированная сохранность данных. Master/Slave репликация. - Размазывание ключей по Redis серверам
Rediska: crc32, consistent hashing, cloud. - Обслуживание и мониторинг
Redis Tools. Команды INFO и MONITOR.
В заключение расскажу о предстоящих нововведениях, а также где, как и почему не стоит использовать Redis.
Если вы не остались равнодушными, голосуйте за доклад.