说明:本文根据Redis 7 RC2 的release note 整理并翻译

近日,Redis 开源社区发布了7.0的两个预览版。在这两个预览版中,有很多Redis 7.0中新增加的特性,新增加的命令或已有命令的新加参数,一些性能上的优化和提高,还有一些API的改变,并且修复了以前版本中的一些bug,下面让我们具体来看一下这些方面的内容。

Redis 7.0 包括了以下一些重要的变化:

1. 将AOF文件的存储方式改为在一个文件夹下存储多个文件。

2. 将持久化文件RDB的版本升级为10,与之前的RDB文件版本不再兼容。

3. 在读取老的RDB文件格式的时候将ziplist转换为listpack,这种转换发生于两种情况之下:从磁盘读取文件或者从一个主节点进行复制文件的时候。

4. 在redis.conf配置文件中,protected-mode 默认更改为yes,只有当你希望你的客户端在没有授权的情况下可以连接到Redis server的时候可以将protected-mode设置为no。

5. 在ACL中,pub/sub channel默认是被阻塞的。

6. 在从节点中,TTL的时间标识的是绝对时间,不再是相对时间,从而保证了过期数据被及时删除。

7. 不再支持 gopher协议。

8. 当在配置文件中设置replica-serve-stale-data=no, 当主节点不再提供服务时,PING命令得不到返回值。

Redis 7.0 新特性其中的几个例子:

1. RedisFunctions:一种新的方式用于Redis server端脚本,它不同于以前版本支持的Lua脚本, Redis Functions可支持持久化,可复制,并且在节点重启之后可以直接从server端读取。 我们会在后续的博客中详细介绍Redis Functions的使用。 如果现在大家就想知道更多详情,可以参考链接https://redis.io/topics/functions-intro

2. 集群支持显示主机名,而不仅仅显示ip地址。

3. 使用多个AOF文件降低了AOF重写期间的内存使用。

4. 在Lua脚本中支持了Function的标志。

5. 在AOF文件中增加了数据更新时间点的标识,使得用户可以恢复某一时间点的数据。

6. Lua脚本支持RESP3 版本的并且可以通过redis.REDIS_VERSION, redis.REDIS_VERSION_NUM得到Redis的版本。

7. 增加了对stream consumer组滞后的追踪和报告 。

8. 增加了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 新增配置选项:

1. maxmemory-clients 可以限定所有客户端使用的内存总和的最大值。

2. cluster-port用户可以自定义集群的绑定端口。

3. 对于Config Set 和Get命令,支持在一次调用过程中传递多个配置参数。例如,现在我们可以在执行一次Config Set命令中更改多个参数: config set maxmemory 10000001 maxmemory-clients 50% port 26381。

4. 还有shutdown-timeout,latency-tracking,cluster-link-sendbuf-limit等相关配置选项。

Redis 7.0 在以下方面有了明显的性能提升:

1. 数据类型Hash,List, Zset的底层数据结构用listpack替换了ziplist

2. 列表(List)的数据类型可以存储超过4GB的单个元素

3. 降低了copy-on-write期间的内存使用

4. 在使用大量散列(Hash)或者有序集合(Zset)时节省了大量的内存

5. 在集群模式下,节省了大量的内存并且降低了系统整体的延迟时间

6. 在集群中,当一个主节点重启之后,从节点不再需要做完全同步,只需要做部分同步即可

7. 当Redis启动时,总是建立一个AOF文件用于持久化

8. 降低了长期没有响应客户(idle, stale client)的内存使用

9. 降低了在客户回复数据包中的对于写的系统调用次数,也同时降低了TCP packet的数目

Radis 7.0 还对模块(Module)的API进行了部分修改如下:

1. 新增了对RESP3类型的应答的API支持

2. 新增了在RM_Call对RESP3回复消息的解析的API支持

3. 增加了对ACL进行验证的支持

4. 还增加API:RM_CreateSubcommand,RM_KeyExists,RM_TrimStringAllocation, RM_SetCommandInfo等

当然,Redis 7.0 前两个预览版中不止以上提到的内容,还有更多的新特性和新功能我们会在后续的博客中继续为大家介绍。

Redis 7.0 新功能新特性总览的更多相关文章

  1. xcode10设置自定义代码快 - Xcode10新功能新内容

    1. 2. 详情: Xcode10新功能新内容https://blog.csdn.net/u010960265/article/details/80630118

  2. 161128、Redis 4.0发布及其新功能介绍

    Redis 4.0-rc1 发布了,这是 4.0 的首个 RC 版.Redis 是一个高性能的key-value数据库.Redis 的出现,很大程度补偿了memcached这类keyvalue存储的不 ...

  3. Redis 6.0 新增功能 - ACL

    Redis 6.0 ACL 期待已久的ACL终于来了,大家知道在redis集群中只有一个db,在多项目操作时可以通过key前缀来区分,但是还是能获取其它key,这样就带来了安全风险. Access C ...

  4. [转]SQL Server 2012 的 T-SQL 新功能 – 新的数据分析函数(LEAD、LAG)

    当您需要在 SQL Server 中利用 T-SQL 比较结果集的每一列跟前一列或后一列的差异时,在过去可能需要利用 CURSOR 搭配临时表变量,或是透过递归 CTE 来达到这个效果,如今 SQL ...

  5. Redis 4.0新功能介绍

    Redis 的作者 antirez 在三天之前通过博客文章<The first release candidate of Redis 4.0 is out>发布了 Redis 4.0 的第 ...

  6. 业余草分享 Spring Boot 2.0 正式发布的新特性

    就在昨天Spring Boot2.0.0.RELEASE正式发布,今天早上在发布Spring Boot2.0的时候还出现一个小插曲,将Spring Boot2.0同步到Maven仓库的时候出现了错误, ...

  7. C# 6 与 .NET Core 1.0 高级编程 - C# 6 的新功能

    个人原创译文,转载请注明出处.有不对的地方欢迎指出与交流. 英文原文:Professional C# 6 and .NET Core 1.0 - What’s New in C# 6 C# 6 的新功 ...

  8. ceph luminous 新功能之内置dashboard

    前言 ceph luminous版本新增加了很多有意思的功能,这个也是一个长期支持版本,所以这些新功能的特性还是很值得期待的,从底层的存储改造,消息方式的改变,以及一些之前未实现的功能的完成,都让ce ...

  9. ceph luminous 新功能之内置dashboard 之 mgr功能模块配置

    前言 ceph luminous版本新增加了很多有意思的功能,这个也是一个长期支持版本,所以这些新功能的特性还是很值得期待的,从底层的存储改造,消息方式的改变,以及一些之前未实现的功能的完成,都让ce ...

随机推荐

  1. golang中如何退出goroutine

    package main import ( "fmt" "runtime" "time" ) func main() { // 用gorou ...

  2. MySQL专题1: 字段和索引

    合集目录 MySQL专题1: 字段和索引 Float.Decimal 存储金额的区别? MySQL中存在 float, double 等非标准数据类型, 也有 decimal 这种标准数据类型 其区别 ...

  3. ApacheCN Angular 译文集 20211114 更新

    Angular 专家级编程 零.前言 一.架构概述和在 Angular 中构建简单应用 二.将 AngularJS 应用迁移到 Angular 应用 三.使用 Angular CLI 生成具有最佳实践 ...

  4. 「ZJOI2014」璀灿光华

    「ZJOI2014」璀灿光华 实际上,可以不用建水晶立方体... 因为,发光水晶的方向都要枚举一遍. 只需知道发光水晶每个方向有哪些水晶就可以了. 对于一个发光水晶,将它连接的水晶标号. 从该水晶bf ...

  5. rabbitMq使用guest登录不上的问题总结

    自己mac电脑上的mq在电脑关机(直接按电源键关机),在开机后,rabbitMq连不上了,报500错误. 1.在使用brew uninstall rabbitmq --force后; 2.我手动安装了 ...

  6. 什么是UILabel

    UILabel极其常用,功能比较专一:显示文字 UILabel的常见属性 @property(nonatomic,copy) NSString *text; 显示的文字 @property(nonat ...

  7. DatabaseMetaData

    getColumns public ResultSet getColumns(String catalog, String schemaPattern, String tableNamePattern ...

  8. k8s之资源限制以及探针检查

    k8s之资源限制以及探针检查 一.资源限制 1. 资源限制的使用 当定义Pod时可以选择性地为每个容器设定所需要的资源数量.最常见的可设定资源是CPU和内存大小,以及其他类型的资源. 2. reuqe ...

  9. JSP页面 CTRL+F 功能实现

    .res { color: rgba(255, 0, 0, 1) } .result { background: rgba(255, 255, 0, 1) } --- js 部分 var oldKey ...

  10. 一加6刷入kali nethunter

    Installing Kali NetHunter On the OnePlus 6 准备工具: adb: https://jingyan.baidu.com/article/22fe7cedf67e ...