Redis 6.2 版本相对于 6.0.9 版本的变更记录

新命令/参数:

  • 添加SMISMEMBER命令以检查多个成员 (#7615)
  • 添加ZMSCORE命令以返回分数数组 (#7593)
  • 添加LMOVE和BLMOVE命令以任意弹出和推入 (#6929)
  • 添加RESET命令以重置客户端连接状态 (#7982)
  • 添加COPY命令以复制键 (#7953)
  • 添加ZDIFF和ZDIFFSTORE命令 (#7961)
  • 添加ZINTER和ZUNION命令 (#7794)
  • 添加GEOSEARCH/GEOSEARCHSTORE命令用于边界框空间查询 (#8094)
  • 向SET命令添加GET参数,以实现更强大的GETSET (#7852)
  • 向XPENDING命令添加独家范围查询 (#8130)
  • 向X[REV]RANGE命令添加独家范围查询 (#8072)
  • 向ZADD添加GT和LT选项以进行条件得分更新 (#7818)
  • 添加CLIENT INFO和CLIENT LIST以获取特定ID的信息 (#8113)
  • 向XPENDING命令添加IDLE参数 (#7972)
  • 向CLIENT LIST添加本地地址及CLIENT KILL过滤器 (#7913)
  • 向XADD命令添加NOMKSTREAM选项 (#7910)
  • 向Sentinel添加命令 introspection (#7940)
  • 添加SENTINEL MYID子命令 (#7858)

新特性:

  • 垃圾数据清理:防止损坏的payload导致崩溃 (#7807),具有启用完整O(N)验证的标志(默认禁用)。
  • ACL模式的Pub/Sub通道 (#7993)
  • 支持Sentinel模式下的ACL (#78888)
  • 同时从stdin和文件获取配置的支持 (#7893)
    允许避免在磁盘上存储密钥。

CLI工具的新特性:

  • redis-cli支持RESP3推送 (#7609)
  • redis-cli集群导入支持需要认证的源和目标 (#7994)
  • redis-cli URI能提供用户名以及密码 (#8048)
  • redis-cli/redis-benchmark允许指定首选的加密套件/密码组 (#8005)
  • redis-cli添加-e选项,当命令执行失败时退出带错误码 (#8136)

命令行为变化:

  • EXISTS不应改变LRU (#8016)
    在Redis 5.0和6.0中,它会触碰键的LRU/LFU。
  • OBJECT不应揭示逻辑过期的键 (#8016)
    将表现得像TYPE或其他非DEBUG命令一样。
  • 改善SELECT和MOVE命令的数据库索引范围检查 (#8085)
    更改了错误消息文本。
  • 修改AUTH / HELLO错误消息 (#7648)
    更改了用户未找到或被禁用时的错误消息。
  • BITOPS长度限制为proto_max_bulk_len而非512MB (#8096)
    限制现在像SETRANGE和APPEND一样可配置。
  • GEORADIUS[BYMEMBER]在Redis超过内存限制时可能会因-OOM失败 (#8107)

其他行为变化:

  • 可选(默认)如果请求的绑定地址不可用则启动失败 (#7936)
    如果依赖于即使一个绑定地址不可用Redis也能成功启动,则需要调整新配置。
  • 限制主数据库字典扩展以防键驱逐 (#7954)
    过去大规模重新散列可能导致大量数据驱逐。现在这个重新散列会被延迟(到一定限制),可能会因为哈希冲突导致性能损失。
  • CONFIG REWRITE原子化且更安全,但需要对配置文件夹的写访问权限 (#7824, #8051)
    此变更已在6.0.9中存在,但在发行说明中遗漏。
  • 新的增量驱逐机制减少驱逐尖峰时延时 (#7653)
    在病态情况下这可能导致内存无控制增长,可能需要特定调整。
  • 不在Redis使用命令行参数启动时重置"save"配置 (#7092)
    提供命令行参数而不提供"save"并指望其被禁用,现在默认"save"配置会生效。
  • 加载时更新INFO中的内存指标 (#7690)
  • 当"supervised"配置启用时,它优先于"daemonize" (#8036)
  • 断言和panic,打印崩溃日志而不生成SIGSEGV (#7585)
  • 添加SIGABRT时的崩溃日志报告,而非静默退出 (#8004)
  • 如果启用THP(透明大页)则禁用它 (#7381)
    如果故意启用,你需要配置Redis以保持它。

漏洞修复:

  • 处理模块阻塞客户端的输出缓冲区限制 (#8141)
    可能导致模块向阻塞客户端发送响应超出限制。
  • 修复setproctitle相关崩溃 (#8150, #8088)
    导致各种启动崩溃,主要在Apple M1芯片或在仪器下。
  • 模块使用RM_Call可能导致副本嵌套MULTI (#8097)
  • 备份/恢复集群模式键到插槽映射以备用于repl-diskless-load=swapdb (#8108)
    集群集模式下,使用repl-diskless-load加载失败时,插槽映射不会恢复。
  • 修复oom-score-adj-values范围,并在配置文件中使用的bug (#8046)
    在配置文件中启用后再次启用它,会有bug。
  • 重置空数据库的平均ttl (#8106)
    仅导致INFO中的误导性指标
  • Redis有子进程时禁用重新散列 (#8007)
    在BGSAVE、复制或AOFRW期间可能导致过度CoW。
  • 进一步改进ACL算法选择类别 (#7966)
    ACL GETUSER的输出现在与ACL SETUSER提供的更相似。
  • 修复模块GIL过早释放导致的bug (#8061)
    理论上(很少)会导致多线程模块破坏内存。
  • 修复集群对没有firstkey的模块命令重定向 (#7539)
  • 减少客户端跟踪导致的键驱逐反馈循环影响 (#8100)
  • 当所有副本断开且’save’未启用时杀死基于磁盘的fork子进程 (#7819)
  • 重写(传播时修改)命令记录为其原始命令 (#8006)
  • 修复集群对未对齐内存访问(旧ARM上的SIGBUS) (#7958)
  • 如果diskless repl子进程被杀死,确保收割子进程PID (#7742)
  • 槽道迁移结束时广播PONG消息,可能减少MOVED响应 (#7571)

其他改进:

  • redis-benchmark中的TLS支持 (#7959)
  • 加速diskless主连接,及一般重连 (#6271)
  • 加载时运行主动碎片整理 (#726)
  • 性能和内存报告改进 - sds控制其内部碎片 (#7875)
  • 加快集群故障转移 (#7948)

平台/工具链相关改进:

  • 可选(默认不使用)使用H/W单调时钟以加快时间采样 (#7644)
  • 移除C11和_Atomic支持编译器的要求 (#7707)
    这将再次允许更容易在旧系统和编译器上构建和使用Redis。
  • 修复ARM上的崩溃日志寄存器输出 (#8020)
  • Raspberry构建修复 (#8095)
  • 为Haiku设置进程标题支持 (#8060)
  • DragonFlyBSD RSS内存采样支持 (#8023)

新配置选项:

  • 使用标准openssl.cnf配置OpenSSL (#8143)
  • oom-score-adj-values配置现在可以取绝对值(除了相对值) (#8046)
  • TLS: 添加不同的客户端证书支持。 (#8076)

信息字段和introspection变化:

  • 添加INFO字段追踪diskless和基于磁盘的复制进度 (#7981)
  • 添加INFO字段跟踪主线程CPU时间和系统时间 (#8132)
  • 添加total_forks到INFO STATS (#8155)
  • 添加maxclients和cluster_connections到INFO CLIENTS (#7979)
  • 添加跟踪bcast标志和客户端重定向到client list (#7995)
  • 修正INFO client_recent_max_input_buffer包括argv数组 (#8065, 参见 #7874)
  • 其他一些变更也添加了它们的信息字段。

模块API变更:

  • 添加CTX_FLAGS_DENY_BLOCKING作为统一方式知道是否允许阻塞 (#8025)
  • 添加数据类型回调为lazy free effort和unlink (#7912)
  • 添加COPY命令的数据类型回调 (#8112)
  • 添加defrag支持的回调 (#8149)
  • 添加repl-diskless-load swapdb事件 (#8153)

模块相关修复:

  • 移动RMAPI_FUNC_SUPPORTED以便使用 (#8037)
  • 改进计时器精度 (#7987)
  • 允许RM_CreateStringPrintf的结果中’\0’ (#6260)

从 6.0 迁移到 6.2

Redis 6.2 大体上是 6.0 的严格超集,您应该可以毫无问题地将应用程序从 6.0 升级到 6.2。然而,上述列出了一些小型的行为变更,请确保这些变更不会对您产生严重影响。

本文是译自Redis 6.2版本发布记录

  • 26
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值