Redis 7.0 新功能新特性总览
说明:本文根据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 新功能新特性总览的更多相关文章
- xcode10设置自定义代码快 - Xcode10新功能新内容
1. 2. 详情: Xcode10新功能新内容https://blog.csdn.net/u010960265/article/details/80630118
- 161128、Redis 4.0发布及其新功能介绍
Redis 4.0-rc1 发布了,这是 4.0 的首个 RC 版.Redis 是一个高性能的key-value数据库.Redis 的出现,很大程度补偿了memcached这类keyvalue存储的不 ...
- Redis 6.0 新增功能 - ACL
Redis 6.0 ACL 期待已久的ACL终于来了,大家知道在redis集群中只有一个db,在多项目操作时可以通过key前缀来区分,但是还是能获取其它key,这样就带来了安全风险. Access C ...
- [转]SQL Server 2012 的 T-SQL 新功能 – 新的数据分析函数(LEAD、LAG)
当您需要在 SQL Server 中利用 T-SQL 比较结果集的每一列跟前一列或后一列的差异时,在过去可能需要利用 CURSOR 搭配临时表变量,或是透过递归 CTE 来达到这个效果,如今 SQL ...
- Redis 4.0新功能介绍
Redis 的作者 antirez 在三天之前通过博客文章<The first release candidate of Redis 4.0 is out>发布了 Redis 4.0 的第 ...
- 业余草分享 Spring Boot 2.0 正式发布的新特性
就在昨天Spring Boot2.0.0.RELEASE正式发布,今天早上在发布Spring Boot2.0的时候还出现一个小插曲,将Spring Boot2.0同步到Maven仓库的时候出现了错误, ...
- C# 6 与 .NET Core 1.0 高级编程 - C# 6 的新功能
个人原创译文,转载请注明出处.有不对的地方欢迎指出与交流. 英文原文:Professional C# 6 and .NET Core 1.0 - What’s New in C# 6 C# 6 的新功 ...
- ceph luminous 新功能之内置dashboard
前言 ceph luminous版本新增加了很多有意思的功能,这个也是一个长期支持版本,所以这些新功能的特性还是很值得期待的,从底层的存储改造,消息方式的改变,以及一些之前未实现的功能的完成,都让ce ...
- ceph luminous 新功能之内置dashboard 之 mgr功能模块配置
前言 ceph luminous版本新增加了很多有意思的功能,这个也是一个长期支持版本,所以这些新功能的特性还是很值得期待的,从底层的存储改造,消息方式的改变,以及一些之前未实现的功能的完成,都让ce ...
随机推荐
- 611. Valid Triangle Number
Given an array consists of non-negative integers, your task is to count the number of triplets chose ...
- java接口概述及特点
1 package face_09; 2 3 4 5 6 abstract class AbsDemo{ 7 abstract void show1(); 8 abstract void show2( ...
- 云原生新时代弄潮儿k8s凭什么在容器化方面独树一帜?
云原生新时代弄潮儿k8s凭什么在容器化方面独树一帜? Kubernetes 可以为做些什么? 在学习一种新技能之前,囧囧建议不要上去先看各种牛叉的实现,我们需要先搞清楚这个技能是什么?学习了之后能为我 ...
- python封装函数到模块
导入整个模块: import 模块名 导入特定函数: from module_name import function_name 通过逗号可以分割函数名,如果需要导入多个则 from a import ...
- Java语法专题2: 类变量的初始化顺序
合集目录 Java语法专题2: 类变量的初始化顺序 问题 这也是Java面试中出镜率很高的基础概念问题 描述一下多级继承中字段初始化顺序 描述一下多级继承中类变量初始化顺序 写出运行以下代码时的控制台 ...
- 微信小程序笔记整理--入门篇。
7-2 微信小程序入门篇 准备篇 1.登录网址,https://mp.weixin.qq.com 注册一个微信小程序. 2.获取微信小程序appid,登录自己的小程序后台,在开发者设置中获得appid ...
- 社交网络分析的 R 基础:(一)初探 R 语言
写在前面 3 年的硕士生涯一转眼就过去了,和社交网络也打了很长时间交道.最近突然想给自己挖个坑,想给这 3 年写个总结,画上一个句号.回想当时学习 R 语言时也是非常戏剧性的,开始科研生活时到处发邮件 ...
- SSH 密钥登录
一.什么是SSH? 简单说,SSH是一种网络协议,用于计算机之间的加密登录. 如果一个用户从本地计算机,使用SSH协议登录另一台远程计算机,我们就可以认为,这种登录是安全的,即使被中途截获,密码也不会 ...
- NoSQL 之 Redis配置与优化
NoSQL 之 Redis配置与优化 1.关系数据库与非关系型数据库概述 2.关系数据库与非关系型数据库区别 3.非关系型数据库产生背景 4.Redis简介 5.Redis安装部署 6.Redis 命 ...
- Apache——配置与应用
Apache配置与应用 1.概述 2.httpd服务支持的虚拟主机类型 3.构建虚拟Web主机 4.构建Web虚拟目录与用户授权限制 5.日志分割 6.AWStats分析系统 1.概述: 虚拟web主 ...