Redis Tutorial
Введение в Redis
Redis, разработанный в 2009 году, представляет собой гибкое хранилище структуры данных в памяти с открытым исходным кодом (лицензировано BSD), используемое в качестве базы данных, кэша и посредника сообщений. Следуя по стопам других баз данных NoSQL, таких как Cassandra, CouchDB и MongoDB, Redis позволяет пользователю хранить огромные объемы данных без ограничений реляционной базы данных.
Он поддерживает различные структуры данных, такие как строки, хэши, наборы, списки, отсортированные наборы, растровые изображения, гиперлогоги и геопространственные индексы с запросами радиуса.
Redis имеет встроенную репликацию, сценарии Lua, исключение LRU, транзакции и различные уровни сохранности на диске, а также обеспечивает высокую доступность через Redis Sentinel и автоматическое разбиение с помощью Redis Cluster.
Redis можно скомпилировать и использовать в Linux, OSX, OpenBSD, NetBSD, FreeBSD. Он поддерживает архитектуры с прямым и прямым порядком байтов, а также 32-битные и 64-битные системы.
Redis поддерживается и разрабатывается Salvatore Sanfilippo . В прошлом Pieter Noordhuis и Matt Stancliff предоставляли очень значительный объем кода и идей как для ядра Redis, так и для клиентских библиотек.
Что означает имя Redis?
Redis обозначает REmote DIctionary Server.
Для чего используется Redis?
Redis - это расширенное хранилище значений ключей, которое может работать как база данных NoSQL или как кэш-память, чтобы повысить производительность при обслуживании данных, хранящихся в системной памяти.
Как взаимодействовать с Redis?
После установки на сервере запустите Redis CLI (интерфейс командной строки), чтобы выдавать команды для Redis. Во время работы над инструментом CLI ваша командная строка изменится на: redis>
Особенности:
- Скорость: Redis загружает весь набор данных в память. Он загружает до 110 000 SET / секунду и 81 000 GET / секунду может быть достигнуто в Linux начального уровня. Redis поддерживает конвейеризацию команд и получение и установку нескольких значений в одной команде для ускорения связи с клиентскими библиотеками.
- Постоянство. Пока все данные хранятся в памяти, изменения асинхронно сохраняются на диске с использованием гибких политик, основанных на времени и / или количестве обновлений с момента последнего сохранения. Redis поддерживает режим сохранения файла только для добавления. Проверьте больше на Постоянство, или прочитайте AppendOnlyFileHowto для получения дополнительной информации.
- Структуры данных: он поддерживает структуры данных, такие как строки, хэши, наборы, списки, отсортированные наборы с запросами диапазона, растровые изображения, гиперлоглоги и геопространственные индексы с запросами радиуса.
- Атомарные операции. Операции Redis, работающие с различными типами данных, являются атомарными, поэтому установка или увеличение ключа, добавление и удаление элементов из набора, увеличение счетчика будет выполнено безопасно.
- Поддерживаемые языки: Многие языки имеют привязки Redis, в том числе: ActionScript, C, C ++, C #, Clojure, Common Lisp, D, Dart, Erlang, Go, Haskell, Haxe, Io, Java, JavaScript (Node.js), Юлия, Lua , Objective-C, Perl, PHP, Pure Data, Python, R, Racket, Ruby, Rust, Scala, Smalltalk и Tcl.
- Репликация Master / Slave: Redis поддерживает очень простую и быструю репликацию Master / Slave. Настолько просто, что для его настройки требуется всего одна строка в файле конфигурации и 21 секунда, чтобы подчиненное устройство завершило начальную синхронизацию ключа 10 ММ, установленного на экземпляре Amazon EC2.
- Sharding: Распределение набора данных по нескольким экземплярам Redis легко в Redis, как и в любом другом хранилище значений ключей. И это в основном зависит от того, могут ли клиентские библиотеки Languages это сделать.
- Переносимый: Redis написан на ANSI C и работает в большинстве систем POSIX, таких как Linux, BSD, Mac OS X, Solaris и так далее. Сообщается, что Redis компилируется и работает под WIN32, если скомпилирован с Cygwin, но официальной поддержки Windows в настоящее время нет.
Почему Redis отличается от других хранилищ ключей?
- Redis - это другой путь эволюции в БД с ключом-значением, где значения могут содержать более сложные типы данных с атомарными операциями, определенными для этих типов данных. Типы данных Redis тесно связаны с фундаментальными структурами данных и открыты для программиста как такового, без дополнительных уровней абстракции.
- Redis находится в оперативной памяти, но сохраняется в дисковой базе данных, поэтому он представляет собой другой компромисс, когда достигается очень высокая скорость записи и чтения с ограничением наборов данных, которые не могут быть больше памяти. Еще одним преимуществом баз данных в памяти является то, что представление сложных структур данных в памяти гораздо проще манипулировать по сравнению с той же структурой данных на диске, поэтому Redis может сделать многое, с небольшой внутренней сложностью. В то же время два формата хранения на диске (RDB и AOF) не обязательно должны подходить для произвольного доступа, поэтому они компактны и всегда генерируются только в виде дополнения.
Что произойдет, если Redis не хватает памяти?
Redis либо будет убит убийцей OOM ядра Linux, либо завершится с ошибкой, либо начнет замедляться. В современных операционных системах malloc () возвращает NULL не часто, обычно сервер начинает перестановку, а производительность Redis снижается, поэтому вы, вероятно, заметите, что что-то не так.Команда INFO сообщит об объеме памяти, используемой Redis, чтобы вы могли писать сценарии, которые контролируют ваши серверы Redis, проверяя наличие критических состояний.
Redis имеет встроенную защиту, позволяющую пользователю устанавливать максимальный лимит использования памяти, используя опцию maxmemory в файле конфигурации, чтобы установить лимит памяти, который может использовать Redis. Если этот предел достигнут, Redis начнет отвечать с ошибкой при написании команд, или вы можете настроить его на удаление ключей при достижении максимального предела памяти в случае, если вы используете Redis для кэширования.
Вы можете легко создавать сложные системы поверх Redis, вот примерный список:
- Пользовательские схемы индексации
- Очереди сообщений с уведомлением о новом элементе в реальном времени
- Направленные и ненаправленные хранилища графиков для следующих или френдинговых систем
- Системы уведомлений о публикации / подписке в реальном времени
- Аналитика в реальном времени
- Блум фильтр серверы
- Очереди задач и системы заданий
- Рекорды лидеров
- Системы ранжирования пользователей
- Иерархические / древовидные системы хранения
- Индивидуальные персонализированные новости или каналы данных для ваших пользователей
Особенности учебных пособий по Redis в w3resource
В этой серии уроков мы подробно рассмотрели Redis 3.0.5. При его создании мы позаботились о том, чтобы учащиеся могли освоить основы Redis.
Вот список функций, которые мы включили во все главы:
1. Мы начали с начала, то есть с установки, с ясного и простого описания.
2. Мы четко определили синтаксис / использование, чтобы вы могли помнить, как его написать.
3. Пример (ы), чтобы показать, как реализуется связанная концепция.
4. Мы показали результат использования.
5. Изобразительная презентация, чтобы помочь вам лучше понять концепцию.
6. Вы можете обратиться к Руководству Redis вместе с этим руководством.
Далее: Установка Redis
Новый контент: Composer: менеджер зависимостей для PHP , R программирования