СУБД Valkey и Redis предоставляют функции для хранения данных в формате ключ/значение, расширенные поддержкой структурированных форматов данных, таких как списки, хэши и множества, а также возможностью выполнения на стороне сервера скриптов-обработчиков на языке Lua. БД хранится в памяти и синхронизируется с версией на диске или отражается в логе изменений на диске, что гарантирует сохранность данных в случае аварийного завершения работы. Поддерживаются транзакции, режим "публикация/подписка", команды для инкремента/декремента, операции над списками и множествами (объединение, пересечение), переименование ключей, master-slave репликация, множественные выборки и функции сортировки.
В новой версии:- Для переноса данных между узлами в кластере задействована техника атомарной миграции слотов, при которой данные переносятся не на уровне отдельных ключей (один ключ за другим), а на уровне атомарного перемещения 16384 байтовых слотов хранения данных. Перенос осуществляется с использованием формата AOF, позволяющего отправлять отдельные элементы коллекций вместо всех данных, связанных с ключом. Подобный подход заметно повышает производительность, позволяет избежать перенаправлений и исключает задержки, возникавшие при доступе клиента к переносимому ключу.
- Добавлена возможность определения отдельного времени жизни для разных полей в хэшах, связанных с одним ключом (ранее время жизни привязывалось к ключу и охватывало разом все поля). Для управления временем жизни данных добавлены новые команды: HEXPIRE, HEXPIREAT, HEXPIRETIME, HGETEX, HPERSIST, HPEXPIRE, HPEXPIREAT, HPEXPIRETIME, HPTTL, HSETEX и HTTL.
- Предоставлена возможность использования в кластерном режиме нумерованных БД, в которых пространство ключей разделяется на несколько разных БД (по умолчанию 16).
- Повышена эффективность работы больших кластеров - продемонстрирован кластер из 2000 узлов, способный обрабатывать миллиард запросов в секунду.
- Добавлена оптимизация, позволяющая в некоторых ситуациях на 40% повысить пропускную способность за счёт упреждающей загрузки группируемых (pipelining) команд в память.
- Добавлена оптимизация, позволяющая в некоторых ситуациях на 20% повысить пропускную способность за счёт исключения копирования данных в памяти (zero copy) во время обработки крупных запросов.
- Добавлена поддержка технологии Multipath TCP для организации доставки пакетов одновременно по нескольким маршрутам через разные сетевые интерфейсы, привязанные к разным IP-адресам. Применение Multipath TCP позволяет в некоторых ситуациях снизить задержки на 25%.
- В BITCOUNT и HyperLogLog добавлены оптимизации, использующие процессорные инструкции SIMD, в некоторых ситуациях позволяющие увеличить пропускную способность на 200%.
- В геопространственные индексы добавлена поддержка запросов местоположения по координатам многоугольника.
- Добавлена команда "DELIFEQ" для удаления ключа, если связанное с ним значение соответствует указанному.
- В команде "CLIENT LIST" реализована возможность задания фильтров, отсеивающих элементы по имени, флагам, активности, БД, IP-адресу и полномочиям.
- Возобновлена поддержка 25 команд, ранее объявленных устаревшими.