Redis - база данных NoSQL, введение
Эта презентация описывает введение Redis, базы данных NoSQL.
расшифровка
Что такое Redis?
► Redis (Remote DIctionary Server) - это открытое, сетевое, однопоточное, расширенное хранилище значений ключей в памяти с дополнительной долговечностью. Его часто называют сервером структуры данных, поскольку ключи могут содержать строки, хэши, списки, наборы и отсортированные наборы.
★ Разработчик (и): Сальваторе Санфилиппо, Питер Нордхёйс ★ Первый выпуск: 10 апреля 2009 г. ★ Стабильный выпуск: 2.8.12 / 23 июня 2014 г. ★ Статус разработки: Активный ★ Написано в: ANSI C ★ Операционная система: кроссплатформенная ★ Доступно на: английском ★ Тип: Ключ-значение магазинов ★ Лицензия: BSD
Redis: для чего?
★ кэш вне процесса ★ дубликат детектора Очереди ★ LIFO / FIFO ★ Очередь приоритетов ★ Распределенный HashMap ★ UID Генератор ★ Pub / Sub ★ Аналитика в реальном времени и приложения для чата ★ Подсчет вещи ★ Метрика БД ★ Реализация истекает на предметы ★ лидеров (игра рекордов) ★ поиск геолокации ★ API троттлинг (ограничения скорости) ★ Автозаполнение ★ Социальная активность
Кто использует Redis?
★ Твиттер ★ Github ★ Weibo ★ Pinterest ★ Snapchat ★ Craigslist ★ Digg ★ StackOverflow ★ Flickr ★ 220.000.000.000 команд в день ★ 500.000.000.000 чтений в день ★ 50.000.000.000 записей в день ★ 500+ серверов 2000+ экземпляров Redis!
ключевая особенность
★ атомные операции ★ Lua Scripting ★ Pub / Sub ★ Транзакции ★ Мастер / Раб репликации ★ кластер (с автоматическим разбиением) * ★ Автоматическое переключение при сбое (Redis Sentinel) ★ Добавить только файл (AOF) персистентность ★ Снимок (RDB файл) персистентность ★ Redis может обрабатывать до 232 ключей, и был протестирован на практике для обработки на минимум 250 миллионов ключей за экземпляр. ★ Каждый список, набор и отсортированный набор может содержать 232 элемента.
Ключевые преимущества и недостатки
► Преимущества
★ Blazing Fast ★ надежный ★ Простота установки, использования и обслуживания ★ Расширяется с помощью сценариев LUA
► Недостатки
★ Постоянство потребляет много ввода-вывода при использовании RDB ★ Все ваши данные должны уместиться в памяти
Redis в памяти
► Redis находится в оперативной памяти, но сохраняется в дисковой базе данных, поэтому он представляет собой другой компромисс, когда достигается очень высокая скорость записи и чтения с ограничением наборов данных, которые не могут быть больше памяти. Еще одним преимуществом баз данных в памяти является то, что представление сложных структур данных в памяти гораздо проще манипулировать по сравнению с той же структурой данных на диске, поэтому Redis может сделать многое, с небольшой внутренней сложностью. В то же время два формата хранения на диске (RDB и AOF) не обязательно должны подходить для произвольного доступа, поэтому они компактны и всегда генерируются только в виде дополнения (даже ротация журналов AOF является дополнением). только операция, так как новая версия генерируется из копии данных в памяти).
Что произойдет, если Redis не хватает памяти?
► Redis либо будет убит OOM killer ядра Linux, либо завершится с ошибкой, либо начнет замедляться. В современных операционных системах malloc () возвращает NULL не часто, обычно сервер начинает подмену, а производительность Redis снижается, поэтому вы, вероятно, заметите, что что-то не так. Команда INFO сообщит об объеме памяти, используемой Redis, чтобы вы могли писать сценарии, которые контролируют ваши серверы Redis, проверяя наличие критических состояний.
Redis Постоянство
★ RDB - это очень компактное представление ваших данных Redis на один момент времени. Файлы RDB идеально подходят для резервного копирования. Например, вы можете архивировать файлы RDB каждый час в течение последних 24 часов и сохранять снимок RDB каждый день в течение 30 дней. Это позволяет легко восстанавливать разные версии набора данных в случае бедствий.
★ RDB очень хорош для аварийного восстановления, поскольку один компактный файл можно передавать в удаленные центры обработки данных или на Amazon S3 (возможно, в зашифрованном виде).
★ RDB максимизирует производительность Redis, так как единственная работа, которую родительский процесс Redis должен сделать для того, чтобы сохраниться, это разбудить ребенка, который сделает все остальное. Родительский экземпляр никогда не будет выполнять дисковый ввод-вывод или тому подобное.
★ RDB позволяет быстрее перезапускать с большими наборами данных по сравнению с AOF.
Redis Replication
► Репликация Redis - это очень простая в использовании и настройке репликация главный-подчиненный, которая позволяет подчиненным серверам Redis быть точными копиями главных серверов. Вот несколько важных фактов о репликации Redis:
★ Redis использует асинхронную репликацию.
★ Мастер может иметь несколько рабов.
★ Рабы могут принимать соединения от других рабов. Рабы также могут быть связаны с другими рабами в виде графической структуры.
★ Redis репликации неблокирует на стороне мастера.
★ Репликация также неблокирует на ведомой стороне.
★ Репликация может использоваться как для масштабируемости, так и для нескольких подчиненных для запросов только для чтения или просто для избыточности данных.
★ Можно использовать репликацию, чтобы избежать затрат на запись мастера записи полного набора данных на диск.
Поддерживаемый язык
► Многие языки, которые имеют привязки Redis, включая: ActionScript, C, C ++, C #, Clojure, Common Lisp, Dart, Erlang, Go, Haskell, Haxe, Io, Java, JavaScript (Node.js), Lua, Objective-C, Perl, PHP, Pure Data, Python, R, Ruby, Scala, Smalltalk и Tcl.
Структура данных Redis
► Redis - это не просто хранилище значений ключей, на самом деле это сервер структур данных, поддерживающий различные типы значений. Вот список всех структур данных, поддерживаемых Redis
★ Бинарно-безопасные строки.
★ Списки: коллекции строковых элементов, отсортированные по порядку вставки. Это в основном связанные списки.
★ Наборы: коллекции уникальных, несортированных строковых элементов.
★ Сортированные наборы, похожие на наборы, но где каждый строковый элемент связан со значением с плавающей запятой, называемым счетом.
★ Хеши, которые представляют собой карты, состоящие из полей, связанных со значениями. И поле, и значение являются строками. Это очень похоже на хэши Ruby или Python.
★ Битовые массивы: с помощью специальных команд можно обрабатывать строковые значения, такие как массив битов: th.
★ HyperLogLogs: это вероятностная структура данных, которая используется для оценки мощности множества.
Redis Быстрый старт
Установка Redis
► Предлагаемый способ установки Redis - это его компиляция из исходных кодов, поскольку Redis не имеет зависимостей, кроме работающего компилятора GCC и libc. Вы можете загрузить последнюю версию Redis tar ball с веб-сайта redis.io или использовать этот специальный URL-адрес, который всегда указывает на последнюю стабильную версию Redis, то есть http://download.redis.io/redis- stable.tar.gz. Чтобы скомпилировать Redis, выполните следующие простые шаги:
★ Wget http://download.redis.io/redis-stable.tar.gz
★ tar xvzf redis-stable.tar.gz
★ CD Redis-стабильный
★ сделать
Установка Redis
► На этом этапе вы можете попробовать, если ваша сборка работает правильно, набрав make test, но это необязательный шаг. После компиляции каталог src внутри дистрибутива Redis заполняется различными исполняемыми файлами, которые являются частью Redis:
★ Redis-сервер - это сам Redis-сервер.
★ redis-sentinel - исполняемый файл Redis Sentinel (мониторинг и отработка отказа).
★ redis-cli - это утилита интерфейса командной строки для общения с Redis.
★ Redis-бенчмарк используется для проверки производительности Redis.
★ redis-check-aof и redis-check-dump полезны в редких случаях поврежденных файлов данных.
Рекомендуется скопировать сервер Redis и интерфейс командной строки в нужных местах, либо вручную, используя следующие команды:
★ sudo cp redis-сервер / usr / local / bin /
★ sudo cp redis-cli / usr / local / bin /
Или просто с помощью make install.
Redis - Пуск / Работа / Выключение
► Запуск Redis:
Простой способ запустить сервер Redis - выполнить двоичный файл сервера redis без каких-либо аргументов: $ redis-server
► Проверьте, работает ли Redis:
Чтобы проверить, работает ли Redis правильно, отправляет команду PING с помощью redis-cli: $ redis-cli ping
пОНГ
► Отключение Redis: ОТКЛЮЧЕНИЕ [НОСИВАЙ] [СОХРАНИТЬ]
★ SHUTDOWN SAVE заставит операцию сохранения в БД, даже если точки сохранения не настроены.
★ ОТКЛЮЧЕНИЕ NOSAVE предотвратит операцию сохранения БД, даже если настроена одна или несколько точек сохранения
Новый контент: Composer: менеджер зависимостей для PHP , R программирования