Redis 7.0 数据库管理系统发布

Redis 7.0 DBMS 已经发布,属于 NoSQL 系统类。 Redis 提供存储键/值数据的功能,并通过对列表、散列和集合等结构化数据格式的支持以及在 Lua 中运行服务器端脚本处理程序的能力来增强。 项目代码是在 BSD 许可证下提供的。 自 2019 年以来,为企业用户提供高级功能的其他模块(例如 RediSearch、RedisGraph、RedisJSON、RedisML、RedisBloom)已在专有 RSAL 许可证下提供。 最近停滞不前的 GoodFORM 项目试图在 AGPLv3 许可下继续开发这些模块的开放版本。

与Memcached等内存存储系统不同,Redis确保数据持久存储在磁盘上,并确保数据库在崩溃时保持完整。 该项目的源代码在 BSD 许可证下分发。 客户端库适用于大多数流行语言,包括 Perl、Python、PHP、Java、Ruby 和 Tcl。 Redis支持事务,它允许你一步执行一组命令,保证一组给定命令执行过程中的一致性和一致性(来自其他请求的命令不能干扰),并且在出现问题时,允许你回滚变化。 所有数据都完全缓存在 RAM 中。

为数据管理提供了递增/递减、标准列表和集合操作(​​并集、交集)、键重命名、多重选择和排序功能等命令。 支持两种存储模式:定期将数据同步到磁盘以及在磁盘上维护更改日志。 在第二种情况下,保证所有更改的完全安全。 可以将主从数据复制组织到多个服务器,以非阻塞模式进行。 还可以使用“发布/订阅”消息模式,在该模式中创建一个通道,通过订阅将消息分发给客户端。

Redis 7.0 的主要变化:

  • 添加了对服务器端功能的支持。 与以前支持的 Lua 语言脚本不同,这些函数不依赖于应用程序,而是旨在实现扩展服务器功能的附加逻辑。 函数的处理与数据密不可分,并且与数据库相关,而不是与应用程序相关,包括复制和存储在持久存储中。
  • 已经提出了 ACL 的第二版,它允许您根据密钥控制对数据的访问,并允许您定义不同的访问命令规则集,并能够将多个选择器(权限集)绑定到每个用户。 每个密钥都可以用特定的权限来标识,例如,您可以限制只能读取或写入密钥的某个子集的访问权限。
  • 提供了在集群中运行的发布-订阅消息分发范例的分区(分片)实现,其中消息被发送到附加了消息通道的特定节点,之后该消息被重定向到所包括的其余节点在碎片中。 客户端可以通过订阅通道(通过连接到该部分的主节点和辅助节点)来接收消息。 使用 SSUBSCRIBE、SUNSUBSCRIBE 和 SPUBLISH 命令执行控制。
  • 添加了对大多数上下文中处理子命令的支持。
  • 添加了新命令:
    • ZMPOP,BZMPOP。
    • LMPOP,BLMPOP。
    • 辛特卡、ZINTER卡。
    • 发布、订阅、取消订阅、PUBSUB ShardChannels/SHARDNUMSUB。
    • 过期时间,过期时间。
    • EVAL_RO、EVALSHA_RO、SORT_RO。
    • 函数 *、FCALL、FCALL_RO。
    • 命令文档、命令列表。
    • 延迟直方图。
    • 集群碎片、集群链接、集群 DELSLOTSRANGE、集群 ADDSLOTSRANGE。
    • 客户不可驱逐。
    • ACL 试运行。
  • 提供了在一个 CONFIG SET/GET 调用中一次处理多个配置的能力。
  • 选项“-json”、“-2”、“-scan”、“-functions-rdb”已添加到 redis-cli 实用程序中。
  • 默认情况下,禁用客户端对影响安全性的设置和命令的访问(例如,禁用 DEBUG 和 MODULE 命令,禁止使用 PROTECTED_CONFIG 标志更改配置)。 Redis-cli 不再将包含敏感数据的命令输出到历史文件。
  • 引入的大部分优化旨在提高性能和减少内存消耗。 例如,启用集群模式、执行写时复制操作以及使用哈希和 zset 键时,内存消耗显着减少。 改进了将数据刷新到磁盘的逻辑(fsync 调用)。 向客户端发送响应时的网络数据包和系统调用的数量已减少。 复制效率得到了提高。
  • Lua脚本执行环境中的漏洞CVE-2022-24735已被修复,该漏洞允许您替换自己的Lua代码并在其他用户(包括更高权限的用户)的上下文中实现其执行。
  • 修复了漏洞 CVE-2022-24736,该漏洞允许 redis-server 进程因 NULL 指针取消引用而崩溃。 该攻击是通过加载专门设计的Lua脚本来进行的。

来源: opennet.ru

添加评论