Выпуск СУБД Redis 3.2
После года разработки состоялся релиз СУБД Redis 3.2, относящейся к классу NoSQL-систем и развиваемой при содействии компании VMware. Redis предоставляет похожие на Memcached функции для хранения данных в формате ключ/значение, расширенные поддержкой структурированных форматов данных, таких как списки, хэши и множества, а также возможностью выполнения на стороне сервера скриптов-обработчиков на языке Lua. В отличие от Memcached, Redis обеспечивает постоянное хранение данных на диске и гарантирует сохранность БД в случае аварийного завершения работы. Исходные тексты проекта распространяются в рамках лицензии BSD. Клиентские библиотеки доступны для большинства популярных языков, включая Perl, Python, PHP, Java, Ruby и Tcl.
Redis поддерживает транзакции, позволяющие выполнить за один шаг группу команд, гарантируя непротиворечивость и последовательность (команды от других запросов не могут вклиниться) выполнения заданного набора команд, а в случае проблем позволяя откатить изменения. Все данные в полном объёме кэшируются в оперативной памяти. Для управления данными предоставляются такие команды, как инкремент/декремент, стандартные операции над списками и множествами (объединение, пересечение), переименование ключей, множественные выборки и функции сортировки. Поддерживается два режима хранения: периодическая синхронизация данных на диск и ведение на диске лога изменений. Во втором случае гарантируется полная сохранность всех изменений. Возможна организация master-slave репликации данных на несколько серверов, осуществляемая в неблокирующем режиме. Доступен также режим обмена сообщениями «публикация/подписка», при котором создаётся канал, сообщения из которого распространяются клиентам по подписке.
Ключевые улучшения, добавленные в Redis 3.2:
- GEO API с возможностью индексирования координат по широте и долготе, вычисления расстояния и указания допустимого радиуса вокруг искомой точки при формировании запросов;
- Новая команда BITFIELD, позволяющая использовать строки как битовый массив из набора целых чисел. Числа в массиве можно инрементировать и декрементировать для использования в качестве счётчиков, настраивать поведение при переполнении;
- Многочисленные улучшения в Redis Cluster, который позволяет развернуть конфигурацию в которой данные автоматически распределяются между несколькими узами Redis. Добавлены средства ребалансировки в redis-trib и улучшена система миграции реплицированных данных. В нестабильной ветке появилась возможность создания узлов за трансляторами адресов и использования средств Docker по перенаправлению портов.
- Реализован альтернативный способ репликации Lua-скриптов — «репликация эффекта от работы скрипта», при котором вместо репликации самого скрипта реплицируется последовательность команд записи, получаемых в результате выполнения скрипта. При данном режиме репликации Redis сохраняет все команды выполняемые движком Lua, которые приводят к изменению данных в БД, и затем повторяет эти команды на slave-серверах;
- Добавлен мощный отладчик скриптов Lua, который можно использовать из redis-cli;
- Увеличена эффективность использования памяти, реализовано новое внутреннее представление списков, значительно экономящих память при хранении больших списков;
- Реализовано согласование времени жизни ключей на первичных и slave-серверах при выполнении операций чтения;
- В команду SPOP добавлена поддержка опционального аргумента со счётчиком;
- В RDB добавлены AUX-поля и увеличена скорость загрузки RDB-файлов;
- Обеспечена возможность использования Sentinel для мониторинга масштабируемости первичных серверов.
© OpenNet