Опубликован релиз СУБД Redis 7.0, относящейся к классу NoSQL-систем. Redis предоставляет функции для хранения данных в формате ключ/значение, расширенные поддержкой структурированных форматов данных, таких как списки, хэши и множества, а также возможностью выполнения на стороне сервера скриптов-обработчиков на языке Lua. Код проекта поставляется под лицензией BSD. Дополнительные модули, в которых предлагаются расширенные возможности для корпоративных пользователей, такие как RediSearch, RedisGraph, RedisJSON, RedisML, RedisBloom, с 2019 года поставляются под проприетарной лицензией RSAL. Развитие открытых вариантов данных модулей под лицензией AGPLv3 пытался продолжить проект GoodFORM, который последнее время находится в стагнации.
В отличие от систем хранения в оперативной памяти, таких как Memcached, Redis обеспечивает постоянное хранение данных на диске и гарантирует сохранность БД в случае аварийного завершения работы. Исходные тексты проекта распространяются в рамках лицензии BSD. Клиентские библиотеки доступны для большинства популярных языков, включая Perl, Python, PHP, Java, Ruby и Tcl. Redis поддерживает транзакции, позволяющие выполнить за один шаг группу команд, гарантируя непротиворечивость и последовательность (команды от других запросов не могут вклиниться) выполнения заданного набора команд, а в случае проблем позволяя откатить изменения. Все данные в полном объёме кэшируются в оперативной памяти.
ഇൻക്രിമെന്റ്/ഡിക്രിമെന്റ്, സ്റ്റാൻഡേർഡ് ലിസ്റ്റും സെറ്റ് ഓപ്പറേഷനുകളും (യൂണിയൻ, ഇന്റർസെക്ഷൻ), കീ റീനാമിംഗ്, മൾട്ടിപ്പിൾ സെലക്ഷനുകൾ, സോർട്ടിംഗ് ഫംഗ്ഷനുകൾ തുടങ്ങിയ കമാൻഡുകൾ ഡാറ്റ മാനേജ്മെന്റിനായി നൽകിയിരിക്കുന്നു. രണ്ട് സ്റ്റോറേജ് മോഡുകൾ പിന്തുണയ്ക്കുന്നു: ഡിസ്കിലേക്ക് ഡാറ്റയുടെ ആനുകാലിക സമന്വയവും ഡിസ്കിൽ ഒരു മാറ്റ ലോഗ് പരിപാലിക്കലും. രണ്ടാമത്തെ സാഹചര്യത്തിൽ, എല്ലാ മാറ്റങ്ങളുടെയും പൂർണ്ണ സുരക്ഷ ഉറപ്പുനൽകുന്നു. നോൺ-ബ്ലോക്കിംഗ് മോഡിൽ നടപ്പിലാക്കുന്ന നിരവധി സെർവറുകളിലേക്ക് മാസ്റ്റർ-സ്ലേവ് ഡാറ്റ റെപ്ലിക്കേഷൻ സംഘടിപ്പിക്കുന്നത് സാധ്യമാണ്. ഒരു "പ്രസിദ്ധീകരിക്കുക/സബ്സ്ക്രൈബ് ചെയ്യുക" എന്ന സന്ദേശമയയ്ക്കൽ മോഡും ലഭ്യമാണ്, അതിൽ ഒരു ചാനൽ സൃഷ്ടിച്ചിരിക്കുന്നു, അതിൽ നിന്നുള്ള സന്ദേശങ്ങൾ സബ്സ്ക്രിപ്ഷൻ വഴി ക്ലയന്റുകൾക്ക് വിതരണം ചെയ്യുന്നു.
Ключевые изменения в Redis 7.0:
- Добавлена поддержка функций, выполняемых на стороне сервера. В отличие от ранее поддерживаемых скриптов на языке Lua, функции не привязаны к приложению и нацелены реализацию дополнительной логики, расширяющей возможности сервера. Функции обрабатываются неразрывно с данными и в привязке к БД, а не к приложению, в том числе реплицируются и сохраняются в постоянном хранилище.
- Предложена вторая редакция ACL, позволяющая управлять доступом к данным на основе ключей и допускающая определение разных наборов правил доступа к командам с возможностью привязки нескольких селекторов (наборов полномочий) к каждому пользователю. Каждый ключ может быть отождествлён с определённым полномочиями, например, можно ограничить доступ только чтением или записью определённого подмножества ключей.
- Предоставлена работающая в кластере секционированная (sharded) реализация парадигмы распространения сообщений по подписке (Publish-Subscribe), при которой сообщение отправляется определённому узлу, к которому привязан канал сообщений, после чего это сообщение перенаправляется остальным узлам, входящим в секцию (shard). Клиенты могут получать сообщения по подписке на канал, как подключаясь к основному узлу, так и ко вторичным узлам секции. Управление производится при помощи команд SSUBSCRIBE, SUNSUBSCRIBE и SPUBLISH.
- Добавлена поддержка обработки подкоманд в большинстве контекстов.
- പുതിയ കമാൻഡുകൾ ചേർത്തു:
- ZMPOP, BZMPOP.
- LMPOP, BLMPOP.
- SINTERCARD, ZINTERCARD.
- SPUBLISH, SSUBSCRIBE, SUNSUBSCRIBE, PUBSUB SHARDCHANNELS/SHARDNUMSUB.
- EXPIRETIME, PEXPIRETIME .
- EVAL_RO, EVALSHA_RO, SORT_RO.
- FUNCTION *, FCALL, FCALL_RO.
- COMMAND DOCS, COMMAND LIST.
- LATENCY HISTOGRAM.
- CLUSTER SHARDS, CLUSTER LINKS, CLUSTER DELSLOTSRANGE, CLUSTER ADDSLOTSRANGE.
- CLIENT NO-EVICT.
- ACL DRYRUN.
- Предоставлена возможность обработки сразу нескольких конфигураций в одном вызове CONFIG SET/GET.
- В утилиту redis-cli добавлены опции «—json», «-2», «—scan», «—functions-rdb».
- По умолчанию отключён доступ клиентам к настройкам и командам, влияющим на безопасность (например, отключены команды DEBUG и MODULE, запрещено изменение конфигураций с флагом PROTECTED_CONFIG). В redis-cli прекращён вывод в файл с историей команд, содержащих конфиденциальные данные.
- Внесена большая порция оптимизаций, нацеленных на повышение производительности и снижение потребления памяти. Например, существенно снижено потребление памяти при включении режима кластера, при выполнении операций copy-on-write и при работе с хэшами и ключами zset. Улучшена логика сброса данных на диск (вызова fsync). Сокращено число сетевых пакетов и обращений к системным вызовам при отправке ответов клиенту. Повышена эффективность репликации.
- Устранена уязвимость CVE-2022-24735 в окружении для исполнения Lua-скриптов, позволяющая осуществить подстановку своего Lua-кода и добиться его выполнения в контексте другого пользователя, в том числе имеющего более высокие привилегии.
- Устранена уязвимость CVE-2022-24736, позволяющая добиться аварийного завершения процесса redis-server из-за разыменования нулевого указателя. Атака совершается через загрузку специально оформленных Lua-скриптов.
അവലംബം: opennet.ru