8023 的含义,8023代表什么意思啊

  

     

  

  一、前言   

  

  Redis版本6.2是在新的项目治理模型下由核心团队管理的第一个重要的Redis版本。Redis 6.2包括许多新命令和改进的功能,但没有重要的功能。主要是使Redis更加完善,解决了所要求的问题。个人觉得最重要的是去掉了版本在使用源码编译安装时对高版本GCC的要求(Redis 6.0版本要求GCC 5.3或更高版本)。安装部署请参考:https://www.toutiao.com/item/6948312723654509095/(无需先升级GCC编译器版本)   

  

  二、新命令/参数:   

  

  添加SMISMEMBER命令来检查多个成员(# 7615)   

  

  添加ZMSCORE命令以返回分数数组(# 7593)   

  

  增加了可以随意弹出和推送的LMOVE和BLMOVE命令(# 6929)   

  

  添加重置命令以重置客户端连接状态(# 7982)   

  

  添加复制密钥的复制命令(# 7953)   

  

  添加ZDIFF和ZDIFFSTORE命令(# 7961)   

  

  添加ZINTER和ZUNION命令(# 7794)   

  

  为边界框空间查询添加GEOSEARCH/GEOSEARCHSTORE命令(# 8094)   

  

  在SET命令中添加GET参数,以获得更强大的GETSET (# 7852)   

  

  将专有范围查询添加到XPENDING (# 8130)   

  

  向XRange添加互斥范围查询(# 8072)   

  

  为ZADD添加GT和LT选项,用于条件分数更新(# 7818)   

  

  添加特定ID的客户端信息和客户端列表(# 8113)   

  

  将IDLE参数添加到XPENDING命令(# 7972)   

  

  将本地地址添加到客户端列表和客户端删除过滤器。(#7913)   

  

  将NOMKSTREAM选项添加到XADD命令(# 7910)   

  

  将命令添加到Sentinel(#7940)   

  

  添加SENTINEL MYID子命令(# 7858)   

  

  将REV、BYLEX和BYSCORE参数添加到ZRANGE和ZRANGESTORE命令(# 7844)   

  

  添加XAUTOCLAIM命令(# 7973)   

  

  向XADD和XTRIM添加MINID调整策略和限制参数(# 8169)   

  

  向GEOSEARCH和GEORADIUS添加任何参数(#8259)   

  

  将CH、NX、XX参数添加到geoadd (# 8227)   

  

  将计数参数添加到LPOP和rpop (# 8179)   

  

  将写入参数添加到客户端暂停已明确暂停写入命令(# 8170)   

  

  将HELLO的proto-ver参数更改为可选(# 7377)   

  

  添加客户端跟踪信息子命令(# 7309)   

  

  添加HRANDFIELD和ZRANDMEMBER命令(# 8297)   

  

  添加故障转移命令(# 8315)   

  

  添加GETEX,GETDEL命令(# 8327)   

  

  将PXAT/EXAT参数添加到SET命令(# 8327)   

  

  向FLUSHALL和FLUSHDB添加SYNC参数,向脚本flush添加ASYNC/SYNC参数(# 8258)   

  

  三、新的功能:   

  

  Server服务器端新功能:   

  

   Dump payload cleaning:防止损坏的有效载荷导致崩溃,带有启用完整O(N)验证的标志(默认禁用)。(#7807)   

  

  发布/订阅通道的ACL模式(# 7993)   

  

  支持哨兵模式的ACL(# 7888)   

  

  支持同时从stdin和files获取配置,避免在磁盘上存储机密信息。(#7893)   

  

  CLI(客户端)工具的新功能:   

  

   redis-cli RESP3推送支持(# 7609)   

  

  导入需要身份认证的redis-cli群集以支持源和目标(# 7994)   

  

   redis-cli可以提供用户名和密码的URIs(# 8048)   

  

   redis-cli/redis-benchmark允许您指定首选密码/密码套件(# 8005)   

p>   

◆ redis-cli 增加 -e 选项可在命令执行失败时与代码一起退出(#8136)

  


  

四、改进

  

1.命令行为更改:

  

◆ EXISTS不应更改LRU(#8016)。在Redis 5.0和6.0中,它会碰到密钥的LRU / LFU。

  

◆ 对象不应显示逻辑上已过期的密钥(#8016)。现在将表现相同的TYPE或任何其他非DEBUG命令。

  

◆ 改善SELECT和MOVE的数据库ID范围检查(#8085)。在错误的数据库索引上更改错误消息文本。

  

◆ 修改AUTH / HELLO错误消息(#7648)。当找不到或禁用用户时,更改错误消息文本。

  

◆ BITOPS长度限制为proto_max_bulk_len,而不是512MB(#8096)。现在可以像在SETRANGE和APPEND中一样配置该限制。

  

◆ 如果Redis超出内存限制(#8107),则GEORADIUS 可能因-OOM而失败

  

◆ 如果给定重叠的BCAST前缀,则CLIENT TRACKING会产生错误(#8176)

  

◆ SWAPDB使WATCHed键失效(#8239)

  

◆ 在可写副本上使用时,SORT命令的行为有所不同(#8283)

  

◆ SRANDMEMBER使用RESP3数组类型而不是set类型(#8504)

  

◆ EXPIRE,EXPIEAT,SETEX,GETEX:提供的到期时间溢出时返回错误(#8287)

  


  

2.其他行为更改:

  

◆ (可选)如果请求的绑定地址不可用,则默认启动失败(#7936)。如果需要Redis成功启动,即使其中一个绑定地址不可用,则需要调整新配置。

  

◆ 限制主数据库字典的扩展,以防止密钥逐出(#7954)过去,大词典的重新哈希处理可能会导致大量数据驱逐。现在,此重新哈希处理已延迟(达到上限),这可能会导致性能下降哈希冲突造成的损失。

  

◆ CONFIG REWRITE是原子的和更安全的,但是需要对配置文件的文件夹(#7824,#8051)具有写访问权。此更改已在6.0.9中提供,但在发行版中未提供笔记。

  

◆ 一种新的增量逐出机制,可减少逐出峰值的延迟(#7653)。在病理情况下,这可能会导致记忆不受控制地增长,并可能需要具体调整。

  

◆ 使用命令行参数启动Redis时,不重置“保存”配置(#7092)。如果您提供的命令行参数没有“保存”并依靠它被禁用,现在将启用默认的“保存”配置。

  

◆ 在加载期间更新INFO的内存指标(#7690)

  

◆ 启用“监督”配置时,它优先于“守护进程”。(#8036)

  

◆ 断言和恐慌,打印崩溃日志而未生成SIGSEGV(#7585)

  

◆ 在SIGABRT上添加了崩溃日志报告,而不是静默退出(#8004)

  

◆ 如果启用(#7381),请禁用THP(透明大页面)。如果您故意启用了它,则需要配置Redis使其保持不变。

  

◆ 避免传播MULTI / EXEC用于只读事务(#8216)

  

◆ 从TIME,ECHO,ROLE,LASTSAVE(#8216)中删除只读标志

  

◆ 修复PFDEBUG的命令标志(#8222)

  

◆ 在FLUSHDB(#8039)之后,跟踪客户端将不再收到不必要的密钥无效消息

  

◆ 前哨:修复SENTINEL SET命令后对配置文件缺少的更新(#8229)

  

◆ 如果存在完全添加的命令,则删除ACL子命令验证。(#8483)

  


  

3.涉及兼容性的错误修复(Redis 6.0中引入的错误):

  

◆ 修复了Big-endian系统上的RDB CRC64校验和(#8270)。如果您使用的是big-endian,请考虑与还原,复制和持久性。

  

◆ 修正了Lua的地图响应中键/值的错误顺序(#8266)。如果您的脚本使用redis.setresp()或返回映射(Redis 6.0中的新增功能),请考虑其中的含义。

  


  

4.仅适用于早期版本的Redis 6.2的错误修复:

  

◆ 解决加载时主动碎片整理中的罕见断言(#8284,#8281)

  

◆ 修复了GEOSEARCH bybox(宽度和高度之间的准确性和不匹配)(#8445)

  

◆ 修正HRANDFIELD和ZRANDMEMBER命令中OOM出现严重错误的风险(#8429)

  

◆ 修复了Sentinel中重复副本的问题,由于支持主机名(#8481)

  

◆ 修复了Sentinel配置重写,改进了#8271(#8480)

  


  

5.Bug修复:

  

◆ 处理模块阻止的客户端的输出缓冲区限制(#8141)。可能导致模块向被阻止的客户端发送答复,从而超出了限制。

  

◆ 修复与setproctitle相关的崩溃。(#8150,#8088)。在启动时导致各种崩溃,主要是在Apple M1芯片或更低级别的芯片上仪器。

  

◆ 执行RM_Call的模块可能导致副本嵌套MULTI(#8097)。

  

◆ 将集群模式密钥备份/恢复到插槽映射以实现repl-diskless-load = swapdb(#8108)。在具有repl-diskless-load的集群模式下,加载失败时,则不会还原插槽映射。

  

◆ 修复oom-score-adj-values范围,并在配置文件中使用时出错(#8046)。启用后,在配置文件中的一行中启用此设置,可能会出现问题。

  

◆ 当数据库为空时重置平均ttl(#8106)。仅导致INFO中的误导性指标。

  

◆ 当Redis拥有子进程时禁用重新哈希处理(#8007)。这可能在BGSAVE,复制或AOFRW期间导致过多的CoW。

  

◆ 进一步改进了用于分类的ACL算法(#7966)。现在,ACL GETUSER的输出与ACL SETUSER提供的输出更加相似。

  

◆ 修复了GIL模块过早发布的错误(#8061)。从理论上讲(可能很少)会导致多线程模块损坏内存。

  

◆ 修复了没有firstkey的模块命令的集群重定向。(#7539)

  

◆ 减少客户端跟踪的影响,从而导致密钥驱逐中出现反馈循环(#8100)

  

◆ 当所有副本掉落且未启用“保存”时,杀死基于磁盘的派生子代(#7819)

  

◆ 重写的命令(为传播而修改)被记录为其原始命令(#8006)

  

◆ 修复对未对齐内存的群集访问(旧ARM上的SIGBUS)#7958

  

◆ 如果无盘repl子项被杀死,请确保获得子pid(#7742)

  

◆ 当插槽的迁移结束时广播PONG消息,可能会减少MOVED响应(#7571)

  

◆ 修复了从大型哈希表中选择随机元素的问题(#8133)

  

◆ 修复了分叉进程删除父级的pidfile(#8231)的问题

  

◆ 修复了启用io-threads-do-reads时崩溃的问题(#8230)

  

◆ 修复了执行集群备份后redis-cli崩溃的问题(#8267)

  

◆ 修复redis-benchmark以将IP地址用于第一个集群节点(#8154)

  

◆ 修复了将大于2GB的字符串保存到RDB文件中的问题(#8306)

  

◆ AOF:通过打开/关闭appendonly配置(#8030)从上次写入错误中恢复

  

◆ 当AOF fsync策略始终为“#8347”时,在出现fsync错误时退出

  

◆ 在测试arm64 CoW错误(#8405)时避免断言(在较早的内核上)

  

◆ CONFIG REWRITE应该接受umask设置(#8371)

  

◆ 修复了一些命令(#8367)中的firstkey,lastkey,step在COMMAND命令中的步骤

  

◆ 当proto-max-bulk-len设置为高时,避免32位溢出(#8522)

  

◆ 修复客户端跟踪跟踪redir损坏的消息中的损坏协议(#8456)

  

◆ 避免在INFO命令状态,错误状态,模块中使用不安全的字段名称字符(#8492)

  

◆ XINFO可以在CLIENT PAUSE WRITE(#8436)期间访问过期的密钥

  

◆ 修复REPLCONF ip地址的允许长度,由于Sentinel支持主机名(#8517)

  

◆ 与-a或--dbnum一起使用时,在redis-benchmark中修复了损坏的协议(#8486)

  

◆ 当考虑切换到新的列表包时,XADD也会计算已删除的记录(#8390)

  

◆ 修复带有已删除记录的流的sanitize-dump-payload(#8568)

  

◆ 防止将client-query-buffer-limit配置设置为小于1mb(#8557)

  


  

6.其他改进:

  

◆ Redis基准测试中的TLS支持(#7959)

  

◆ 加速无盘主连接和常规重新连接(#6271)

  

◆ 在阻止/加载时运行主动碎片整理(#7726)

  

◆ 性能和内存报告改进-sds控制其内部碎片(#7875)

  

◆ 加速群集故障转移。(#7948)

  

◆ 改善复制握手时间(#8214)

  

◆ 在还异步释放数据库的情况下,异步释放客户端跟踪表内存(#8039)

  

◆ 在某些情况下避免浪费浪费的瞬时内存分配(#8286,#5954)

  

◆ 通过'requirepass'和'masterauth'配置处理二进制字符串值(#8200)

  

◆ 一种通过复制获取RDB文件而无需过多复制缓冲区的方法(#8303)

  

◆ 针对大型集群优化clusterGenNodesDescription的性能(#8182)

  

◆ 使用COUNT(#8326)优化GEORADIUS / GEOSEARCH中的排序

  

◆ 在对ziplist进行编码时优化HRANDFIELD和ZRANDMEMBER案例4(#8444)

  

◆ 优化就地替换HSET,HINCRBY,LSET中的元素(#8493)

  

◆ 删除冗余列表以存储pubsub模式(#8472)

  

◆ 在命令行工具中添加--insecure选项(#8416)

  

◆ 在运行时修改端口,tls-port和绑定配置选项(#8510)

  


  

7.平台/工具链支持相关的改进:

  

◆ (可选)(默认情况下不是)使用H / W单调时钟进行更快的时间采样(#7644)

  

◆ 删除对C11和_Atomic支持的编译器的要求(#7707)。这样可以更轻松地在较旧的系统上构建和使用Redis,并且再次编译。

  

◆ 修正了崩溃日志寄存器在ARM上的输出。(#8020)

  

◆ 树莓派修复。(#8095)

  

◆ 为Haiku设置进程标题支持。(#8060)

  

◆ DragonFlyBSD RSS内存采样支持。(#8023)

  

◆ 安装redis-check-rdb和redis-check-aof作为与redis-server的符号链接(#5745)

  

◆ 添加对ARM64 Linux内核错误的检查(#8224)。由于此问题的潜在严重性,Redis将拒绝继续运行默认情况下受影响的平台。

  

◆ 如果未使用jemalloc,则修复了非glibc系统上的编译错误(#8533)

  

◆ 改进了FreeBSD上的内存消耗和内存使用情况跟踪(#8545)

  

◆ 使用jemalloc修复ARM64 MacOS上的编译(#8458)

  


  

8.哨兵:

  

◆ 将主机名支持添加到Sentinel(#8282)

  

◆ 防止文件描述符泄漏到Sentinel脚本中(#8242)

  

◆ 修复配置文件的行顺序依赖性和配置重写顺序(#8271)

  


  

9.新的配置选项:

  

◆ 启用使用标准openssl.cnf配置OpenSSL(#8143)

  

◆ oom-score-adj-values配置现在可以采用绝对值(相对值除外)(#8046)

  

◆ TLS:添加其他客户端证书支持。(#8076)

  

◆ 请注意,上面列出的其他一些更改添加了它们的配置选项。

  

◆ 添加set-proc-title配置选项以禁用对进程标题的更改(#3623)

  

◆ 添加proc-title-template选项以控制进程标题中显示的内容(#8397)

  

◆ 添加lazyfree-lazy-user-flush配置选项以控制FLUSHALL,FLUSHDB和SCRIPT FLUSH(#8258)

  


  

10.特殊注意事项:

  

◆ 修复了关于save配置指令(#8337)的误导性描述

  


  

11.信息字段和自省更改:

  

◆ 添加INFO字段以跟踪无盘和基于磁盘的复制进度(#7981)

  

◆ 为主线程cpu时间添加INFO字段,并刮取系统时间。(#8132)

  

◆ 将total_forks添加到INFO STATS(#8155)

  

◆ 将maxclients和cluster_connections添加到INFO CLIENTS(#7979)

  

◆ 在客户端列表中添加跟踪bcast标志和客户端重定向(#7995)

  

◆ 修复了INFO client_recent_max_input_buffer包含argv数组的问题(#8065,参见#7874)

  

◆ 请注意,上面列出的其他一些更改添加了他们的信息字段。

  

◆ 将errorstats部分添加到INFO命令中(#8217)

  

◆ 添加失败呼叫和拒绝呼叫字段信息的commandstats部分(#8217)

  

◆ 连续报告子级写时复制指标(#8264)

  

◆ SLOWLOG和LATENCY监视器包括被阻止命令的解除阻止时间(#7491)

  

◆ 添加信息字段以跟踪BGSAVE,AOFOR,复制的进度(#8414)

  


  

12.模块API更改:

  

◆ 添加CTX_FLAGS_DENY_BLOCKING作为统一的方式来了解是否允许阻止(#8025)

  

◆ 添加数据类型回调以实现懒惰工作,并取消链接(#7912)

  

◆ 为COPY命令添加数据类型回调(#8112)

  

◆ 添加用于碎片整理支持的回调。(#8149)

  

◆ 为repl-diskless-load swapdb添加模块事件(#8153)

  

◆ 添加RedisModule_SendChildCOWInfo API(#8264)

  

◆ 添加可以复制的命令标志(#8170)

  


  

13.与模块相关的修复:

  

◆ 移动了RMAPI_FUNC_SUPPORTED使其可用(#8037)

  

◆ 提高计时器精度(#7987)

  

◆ 在RM_CreateStringPrintf的结果中允许'\ 0'(#6260)

  

◆ 为流添加模块API(#8288)

  

◆ 为叉子孩子的出生和终止添加事件(#8289)

  

◆ 添加RM_BlockedClientMeasureTime ◆ 等,以跟踪commandstats中的后台处理(#7491)

  

◆ 修复了v6.2中的错误,错误的值传递给了新的取消链接回调(#8381)

  

◆ 修复了v6.2中的错误,在键上被阻止的模块在LPUSH之类的命令上被取消阻止(#8356)

  

◆ RM_ZsetRem:如果为空则删除键,该错误可能会留下空的zset键(#8453)

  

◆ RM_HashSet:添加COUNT_ALL标志并设置errno(#8446)

  

◆ 用于获取客户端用户名的新模块API(#8508)

  

◆ 通过使用共享的可重用客户端来优化RM_Call(#8516)

  

◆ 通过RM_Call修复了运行CLIENT INFO的崩溃问题(#8560)

相关文章