Pull to refresh

Redis — продвинутое key-value хранилище. Опыт применения в нагруженных проектах

Reading time 2 min
Views 7.5K
Мы уже пол года успешно используем Redis в своих highload проектах. За это время было выработано много удачных решений на Redis для задач, с которыми сталкиваются разработчики большинства крупных проектов. Примерами этих решений я и хотел бы поделиться на предстоящей DEVCONF, чтобы на практике показать возможности, преимущества и слабые стороны 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.

Если вы не остались равнодушными, голосуйте за доклад.
Tags:
Hubs:
+36
Comments 57
Comments Comments 57

Articles