Redis 5 был выпущен с новой структурой данных Streams. Это первая полностью новая структура данных в Redis за четыре года, она представляет собой структуру данных, подобную журналу, которая позволяет хранить несколько полей и строковых значений с автоматической последовательностью, основанной на времени, с одним ключом.
Redis — это расширенное хранилище ключей и значений с открытым исходным кодом, лицензируемое BSD, где ключи могут содержать строки, хэши, списки, наборы и отсортированные наборы. Он становится все более популярным в веб-разработке как хранилище состояний сеанса из-за его простоты и поддержки обширной структуры данных.
Потоки Redis — это похожие на журнал структуры данных, которые можно использовать для хранения нескольких полей и строковых значений с автоматической последовательностью, основанной на времени, с одним ключом. Поток в Redis концептуально похож на список, в который вы можете вставлять и извлекать значения. В отличие от списков, в потоках Redis вы можете искать элементы по идентификатору. Потоки Redis реализованы с помощью Rax, библиотеки Radix-tree, которая также была выпущена независимо. Это реализация с эффективным использованием памяти, оптимизированная для быстрого поиска и запросов диапазона.
Преимущества использования потоков в Redis включают набор операций блокировки, которые потребители могут использовать для ожидания добавления новых данных в поток производителями, и новый метод, называемый группами потребителей. Они похожи на группы потребителей Kafka и означают, что группа клиентов может сотрудничать, чтобы каждый из них потреблял разные части одного и того же потока сообщений.
Следующее главное улучшение новой версии — работа с отсортированными наборами. Теперь есть команды, которые позволяют удалять элементы с наибольшим или наименьшим баллом из отсортированного набора. Существуют также варианты блокировки этих команд, которые ждут прибытия максимальных или минимальных значений, поэтому теперь вы можете не только удалить самые высокие или самые низкие значения, но также можете дождаться прибытия этих членов.
В модули Redis добавлены новые функции API. Коллекция API модулей теперь включает функции для таймеров и кластеров. Поддержка кластеров может использоваться для реализации кластерной шины сообщений, чтобы узел мог отправлять сообщение конкретному узлу или всем узлам. Поддержка таймеров означает, что модуль теперь может создавать таймеры высокой точности, где он может настраивать продолжительность в миллисекундах и обратный вызов.
В другом месте была улучшена активная дефрагментация памяти. Дефрагментация памяти, когда Redis находится в оперативном режиме, была введена в предыдущей версии, что означает, что Redis сканирует пространство ключей и для каждого указателя спрашивает распределитель, поможет ли перемещение его на новый адрес уменьшить фрагментацию. Этот выпуск поставляется с улучшенной версией, которая работает быстрее, умнее и имеет меньшую задержку.
Также есть лучший и более быстрый алгоритм для HyperLogLogs и встроенная справка для redis-cli.
Последняя особенность — добавление новой команды под названием LOLWUT, которая воспроизводит работы компьютерного художника Георга Ниса Шоттера. Идея состоит в том, что это можно использовать, чтобы доказать, что Redis работает правильно на системах, с которыми вы не знакомы, а также в ознаменование 50-летия Schotter.