После года разработки состоялся (http://antirez.com/news/104) релиз СУБД Redis 3.2 (http://redis.io/), относящейся к классу NoSQL-систем и развиваемой при содействии компании VMware. Redis предоставляет похожие на Memcached функции для хранения данных в формате ключ/значение, расширенные поддержкой структурированных форматов данных, таких как списки, хэши и множества, а также возможностью выполнения на стороне сервера скриптов-обработчиков на языке Lua. В отличие от Memcached, Redis обеспечивает постоянное хранение данных на диске и гарантирует сохранность БД в случае аварийного завершения работы. Исходные тексты проекта распространяются в рамках лицензии BSD. Клиентские библиотеки доступны для большинства популярных языков, включая Perl, Python, PHP, Java, Ruby и Tcl. Redis поддерживает транзакции, позволяющие выполнить за один шаг группу команд, гарантируя непротиворечивость и последовательность (команды от других запросов не могут вклиниться) выполнения заданного набора команд, а в случае проблем позволяя откатить изменения. Все данные в полном объёме кэшируются в оперативной памяти. Для управления данными предоставляются такие команды, как инкремент/декремент, стандартные операции над списками и множествами (объединение, пересечение), переименование ключей, множественные выборки и функции сортировки. Поддерживается два режима хранения: периодическая синхронизация данных на диск и ведение на диске лога изменений. Во втором случае гарантируется полная сохранность всех изменений. Возможна организация master-slave репликации данных на несколько серверов, осуществляемая в неблокирующем режиме. Доступен также режим обмена сообщениями "публикация/подписка", при котором создаётся канал, сообщения из которого распространяются клиентам по подписке.
Ключевые улучшения (https://raw.githubusercontent.com/antirez/redis/3.2/00-RELEA...), добавленные в Redis 3.2:
- GEO API (http://redis.io/commands/#geo) с возможностью индексирования координат по широте и долготе, вычисления расстояния и указания допустимого радиуса вокруг искомой точки при формировании запросов;
- Новая команда BITFIELD (http://redis.io/commands/bitfield), позволяющая использовать строки как битовый массив из набора целых чисел. Числа в массиве можно инрементировать и декрементировать для использования в качестве счётчиков, настраивать поведение при переполнении;
- Многочисленные улучшения в Redis Cluster, который позволяет развернуть конфигурацию в которой данные автоматически распределяются между несколькими узами Redis. Добавлены средства ребалансировки в redis-trib и улучшена система миграции реплицированных данных. В нестабильной ветке появилась возможность создания узлов за трансляторами адресов и использования средств Docker по перенаправлению портов.
- Реализован альтернативный способ репликации (http://redis.io/commands/EVAL) Lua-скриптов - "репликация эффекта от работы скрипта", при котором вместо репликации самого скрипта реплицируется последовательность команд записи, получаемых в результате выполнения скрипта. При данном режиме репликации Redis сохраняет все команды выполняемые движком Lua, которые приводят к изменению данных в БД, и затем повторяет эти команды на slave-серверах;
- Добавлен мощный отладчик скриптов Lua, который можно использовать из redis-cli;
<center><iframe width="640" height="360" src="https://www.youtube.com/embed/IMvRfStaoyM?rel=0" frameborder="0" allowfullscreen></iframe>
</center>
- Увеличена эффективность использования памяти, реализовано новое внутреннее представление списков, значительно экономящих память при хранении больших списков;
- Реализовано согласование времени жизни ключей на первичных и slave-серверах при выполнении операций чтения;
- В команду SPOP добавлена поддержка опционального аргумента со счётчиком;
- В RDB добавлены AUX-поля и увеличена скорость загрузки RDB-файлов;
- Обеспечена возможность использования Sentinel (http://redis.io/topics/sentinel) для мониторинга масштабируемости первичных серверов.
URL: http://antirez.com/news/104
Новость: http://www.opennet.me/opennews/art.shtml?num=44383