共计 2423 个字符,预计需要花费 7 分钟才能阅读完成。
阐明:本文依据 Redis 7 RC2 的 release note 整顿并翻译
近日,Redis 开源社区公布了 7.0 的两个预览版。在这两个预览版中,有很多 Redis 7.0 中新减少的个性,新减少的命令或已有命令的新加参数,一些性能上的优化和进步,还有一些 API 的扭转,并且修复了以前版本中的一些 bug,上面让咱们具体来看一下这些方面的内容。
Redis 7.0 包含了以下一些重要的变动:
- 将 AOF 文件的存储形式改为在一个文件夹下存储多个文件。
- 将长久化文件 RDB 的版本升级为 10,与之前的 RDB 文件版本不再兼容。
- 在读取老的 RDB 文件格式的时候将 ziplist 转换为 listpack,这种转换产生于两种状况之下:从磁盘读取文件或者从一个主节点进行复制文件的时候。
- 在 redis.conf 配置文件中,protected-mode 默认更改为 yes,只有当你心愿你的客户端在没有受权的状况下能够连贯到 Redis server 的时候能够将 protected-mode 设置为 no。
- 在 ACL 中,pub/sub channel 默认是被阻塞的。
- 在从节点中,TTL 的工夫标识的是相对工夫,不再是绝对工夫,从而保障了过期数据被及时删除。
- 不再反对 gopher 协定。
- 当在配置文件中设置 replica-serve-stale-data=no,当主节点不再提供服务时,PING 命令得不到返回值。
Redis 7.0 新个性其中的几个例子:
- RedisFunctions:一种新的形式用于 Redis server 端脚本,它不同于以前版本反对的 Lua 脚本,Redis Functions 可反对长久化,可复制,并且在节点重启之后能够间接从 server 端读取。咱们会在后续的博客中具体介绍 Redis Functions 的应用。如果当初大家就想晓得更多详情,能够参考链接 https://redis.io/topics/funct…
- 集群反对显示主机名,而不仅仅显示 ip 地址。
- 应用多个 AOF 文件升高了 AOF 重写期间的内存应用。
- 在 Lua 脚本中反对了 Function 的标记。
- 在 AOF 文件中减少了数据更新工夫点的标识,使得用户能够复原某一时间点的数据。
- Lua 脚本反对 RESP3 版本的并且能够通过 redis.REDIS_VERSION, redis.REDIS_VERSION_NUM 失去 Redis 的版本。
- 减少了对 stream consumer 组滞后的追踪和报告。
- 减少了 API 以便于能够在 functions 和 Lua 脚本中明确地查看 ACL。
Redis 7.0 新增 14 个用户端命令和 15 个已有命令的相干参数选项,其中包含:ZMPOP, BZMPOP,LMPOP, BLMPOP 等新命令,对于 EXPIRE 和 SET 命令,新增了更多的命令参数选项。
例如,ZMPOP 的格局如下:ZMPOP numkeys key [key …] MIN|MAX [COUNT count],而 BZMPOP 是 ZMPOP 的阻塞版本。
上面是一个应用 ZMPOP 的例子:
redis> ZMPOP 1 notsuchkey MIN(nil)redis> ZADD myzset 1 "one" 2 "two" 3 "three"
(integer) 3
redis> ZMPOP 1 myzset MIN
1) "myzset"
2) 1) 1) "one"
2) "1"
redis> ZRANGE myzset 0 -1 WITHSCORES
1) "two"
2) "2"
3) "three"
4) "3"
redis> ZMPOP 1 myzset MAX
1) "myzset"
2) 1) 1) "three"
2) "3"
redis> ZRANGE myzset 0 -1 WITHSCORES
1) "two"
2) "2"
Redis 7.0 新增 10 个治理和监控相干的命令及其相干参数选项,其中包含:COMMAND LIST,COMMAND INFO,CLUSTER DELSLOTSRANGE and CLUSTER ADDSLOTSRANGE 等。
Redis 7.0 新增配置选项:
- maxmemory-clients 能够限定所有客户端应用的内存总和的最大值。
- cluster-port 用户能够自定义集群的绑定端口。
- 对于 Config Set 和 Get 命令,反对在一次调用过程中传递多个配置参数。例如,当初咱们能够在执行一次 Config Set 命令中更改多个参数:config set maxmemory 10000001 maxmemory-clients 50% port 26381。
- 还有 shutdown-timeout,latency-tracking,cluster-link-sendbuf-limit 等相干配置选项。
Redis 7.0 在以下方面有了显著的性能晋升:
- 数据类型 Hash,List,Zset 的底层数据结构用 listpack 替换了 ziplist
- 列表(List)的数据类型能够存储超过 4GB 的单个元素
- 升高了 copy-on-write 期间的内存应用
- 在应用大量散列(Hash)或者有序汇合(Zset)时节俭了大量的内存
- 在集群模式下,节俭了大量的内存并且升高了零碎整体的延迟时间
- 在集群中,当一个主节点重启之后,从节点不再须要做齐全同步,只须要做局部同步即可
- 当 Redis 启动时,总是建设一个 AOF 文件用于长久化
- 升高了长期没有响应客户 (idle, stale client) 的内存应用
- 升高了在客户回复数据包中的对于写的零碎调用次数,也同时升高了 TCP packet 的数目
Radis 7.0 还对模块(Module)的 API 进行了局部批改如下:
- 新增了对 RESP3 类型的应答的 API 反对
- 新增了在 RM_Call 对 RESP3 回复音讯的解析的 API 反对
- 减少了对 ACL 进行验证的反对
- 还减少 API:RM_CreateSubcommand,RM_KeyExists,RM_TrimStringAllocation,RM_SetCommandInfo 等
当然,Redis 7.0 前两个预览版中不止以上提到的内容,还有更多的新个性和新性能咱们会在后续的博客中持续为大家介绍。
正文完