Практический пример: Redis

Концепции NoSQL

Miriam Antona

Software engineer

Redis — обзор

  • Remote Dictionary Server
  • Популярная база данных «ключ — значение»
  • Быстрое хранилище данных в памяти
    • Набор данных в памяти
    • Поддерживает сохранение данных на диск
  • Используется как:
    • База данных
    • Кэш
    • Брокер сообщений

Логотип Redis

  • Открытый исходный код
  • Redis Labs: более 400 сотрудников
Концепции NoSQL

Redis — структуры данных

  • Строки
      SET name Ann
    
  • Списки
      RPUSH my_numbers 1 2 3
    
  • Множества
      SADD my_set 1 2 3
    
  • Хэши
      HMSET user:123 name Ann surname Smith
    
  • ...
Концепции NoSQL

Redis — структуры данных

  • Строки
      SET name Ann
    
  • Списки
      RPUSH my_numbers 1 2 3
    
  • Множества
      SADD my_set 1 2 3
    
  • Хэши
      HMSET user:123 name Ann surname Smith
    
  • ...
1 https://redis.io/glossary/redis-data-structures/
Концепции NoSQL

Redis — возможности

  • Атомарные операции
  • Транзакции
  • Скриптинг на Lua для сложных операций
  • Языки программирования: Python, R, C#, Java, JavaScript, PHP...
  • Асинхронная репликация
Концепции NoSQL

Redis — популярные сценарии использования

  • Кэширование (результаты запросов, изображения, файлы...)
  • Хранение сессий (профили пользователей, учётные данные...)
  • Чат, обмен сообщениями и очереди (чат-комнаты, комментарии в реальном времени, ленты соцсетей...)
  • Аналитика в реальном времени (соцсети, реклама)
  • Игровые таблицы лидеров (рейтинговые списки в реальном времени)
  • и др.
Концепции NoSQL

Redis в облаке

  • Amazon Web Services Elasticache для Redis
  • Microsoft Azure Cache для Redis в Azure
  • Alibaba ApsaraDB для Redis в Alibaba Cloud
Концепции NoSQL

Redis — клиенты

Логотипы некоторых клиентов Redis

Концепции NoSQL

Практический пример: Editoo

Логотип Editoo

  • Малый бизнес
  • Онлайн-инструмент для создания пользовательских журналов
    • личных
    • корпоративных

Проблема:

  • Высокая задержка из-за роста числа пользователей
  • Реляционная СУБД не справлялась с возросшей нагрузкой

 

Решение: использование Redis

  • Хранение пользовательских сессий
  • Кэширование запросов к базе данных
Концепции NoSQL

Практический пример: Editoo

Результаты:

  • Сокращение времени простоя
  • Повышение производительности
  • Планируемый перенос данных из реляционных баз в Redis
Концепции NoSQL

Практический пример: Editoo

Результаты:

  • Сокращение времени простоя
  • Повышение производительности
  • Планируемый перенос данных из реляционных баз в Redis
1 https://redis.io/customers/
Концепции NoSQL

Давайте потренируемся!

Концепции NoSQL

Preparing Video For Download...