前言:
今天姐妹们对“linux diskless”大致比较关怀,小伙伴们都想要学习一些“linux diskless”的相关文章。那么小编也在网络上网罗了一些对于“linux diskless””的相关知识,希望我们能喜欢,姐妹们一起来了解一下吧!一、前言
Redis 6.2 版本是在新的项目治理模型下核心团队管理的第一个重要的Redis版本。Redis 6.2 包括许多新命令和改进功能,但没有重大功能。它主要使Redis更加完整,并解决了已请求的问题。个人觉得最重要的是去掉了版本在使用源码编译安装时对高版本GCC的要求(Redis6.0版本需要GCC 5.3以上版本)。安装部署请参考: (无需先升级GCC编译器版本)
二、新命令/参数:
◆ 添加SMISMEMBER命令来检查多个成员(#7615)
◆ 添加ZMSCORE命令以返回分数数组(#7593)
◆ 添加可任意弹出和推入的LMOVE和BLMOVE命令(#6929)
◆ 添加RESET命令以重置客户端连接状态(#7982)
◆ 添加复制密钥的COPY命令(#7953)
◆ 添加ZDIFF和ZDIFFSTORE命令(#7961)
◆ 添加ZINTER和ZUNION命令(#7794)
◆ 为边界框空间查询添加GEOSEARCH / GEOSEARCHSTORE命令(#8094)
◆ 将GET参数添加到SET命令中,以获得更强大的GETSET(#7852)
◆ 向XPENDING添加专有范围查询(#8130)
◆ 将互斥范围查询添加到X [REV] RANGE(#8072)
◆ 为ZADD添加GT和LT选项以进行条件分数更新(#7818)
◆ 为特定ID添加客户端信息和客户端列表(#8113)
◆ 将IDLE参数添加到XPENDING命令(#7972)
◆ 将本地地址添加到CLIENT LIST和CLIENT KILL过滤器。(#7913)
◆ 将NOMKSTREAM选项添加到XADD命令(#7910)
◆ 将命令添加到Sentinel(#7940)
◆ 添加SENTINEL MYID子命令(#7858)
◆ 将REV,BYLEX和BYSCORE参数添加到ZRANGE和ZRANGESTORE命令(#7844)
◆ 添加XAUTOCLAIM命令(#7973)
◆ 将MINID调整策略和LIMIT参数添加到XADD和XTRIM(#8169)
◆ 将ANY参数添加到GEOSEARCH和GEORADIUS(#8259)
◆ 将CH,NX,XX参数添加到GEOADD(#8227)
◆ 将COUNT参数添加到LPOP和RPOP(#8179)
◆ 将WRITE参数添加到CLIENT PAUSE中已专门暂停写入命令(#8170)
◆ 将HELLO的proto-ver参数更改为可选(#7377)
◆ 添加CLIENT TRACKINGINFO子命令(#7309)
◆ 添加HRANDFIELD和ZRANDMEMBER命令(#8297)
◆ 添加FAILOVER命令(#8315)
◆ 添加GETEX,GETDEL命令(#8327)
◆ 将PXAT / EXAT参数添加到SET命令(#8327)
◆ 将SYNC arg添加到FLUSHALL和FLUSHDB,并将ASYNC/SYNC arg添加到SCRIPT FLUSH(#8258)
三、新的功能:
Server服务器端新功能:
◆ 转储有效负载清理:防止损坏的有效负载导致崩溃,具有用于启用完整O(N)验证的标志(默认情况下处于禁用状态)。(#7807)
◆ 发布/订阅通道的ACL模式(#7993)
◆ 支持Sentinel模式的ACL(#7888)
◆ 支持同时从stdin和文件中获取配置,避免在磁盘上存储机密信息。(#7893)
CLI(客户端)工具的新功能:
◆ redis-cli RESP3推送支持(#7609)
◆ 需要身份验证的redis-cli集群导入支持源和目标(#7994)
◆ redis-cli 能够提供用户名和密码的URI(#8048)
◆ redis-cli / redis-benchmark允许指定首选密码/密码套件(#8005)
◆ 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 [BYMEMBER]可能因-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)
标签: #linux diskless