[转帖]【Redis系列】Redis发布版本历史及特性

redis,系列,发布,版本,历史,特性 · 浏览次数 : 0

小编点评

**排版内容** **Redis 5.0** * 新的流数据类型 (Stream data type) * 新的 Redis 模块 API:定时器、集群和字典 API * RDB 增加 LFU 和 LRU 信息 * 集群管理器从 Ruby (redis-trib.rb) 移植到了redis-cli 中的 C 语言代码 * 新的有序集合 (sorted set) 命令:ZPOPMIN/MAX 和阻塞变体 (blocking variants) **Redis 6.0** * 新的函数 API * ACL:细粒度的基于密钥的权限,允许用户支持多个带有选择器的命令规则集 * 集群:分片(特定于节点)发布/订阅支持 * 在大多数情况下对子命令的一流处理 * 命令元数据和文档 [https://redis.io/commands/command-docs, https://redis.io/topics/command-tips](https://redis.io/commands/command-docs, https://redis.io/topics/command-tips) * 命令键规格。一种更好的方式让客户找到关键论点及其读/写目的 **其他** * Redis 7.0 RC1 于 2022 年 1 月 31 日发布 * 新的函数 API * ACL:细粒度的基于密钥的权限,允许用户支持多个带有选择器的命令规则集 * 集群:支持主机名,而不仅仅是 IP 地址 * 改进了对网络缓冲区消耗的内存的管理,以及一个选项当总内存超过限制时删除客户端 * Cluster:一种断开集群总线连接的机制,以防止不受控制的缓冲区增长

正文

在这里插入图片描述

概述

Redis 使用标准版本标记进行版本控制:major.minor.patchlevel。

偶数的版本号表示稳定的版本, 例如 1.2,2.0,2.2,2.4,2.6,2.8。

奇数的版本号用来表示非标准版本,例如2.9.x是非稳定版本,它的稳定版本是3.0。

官网下载地址:https://redis.io/download/

Redis2.6

Redis2.6在2012年正式发布,经历了17个版本,到2.6.17版本,相比于Redis2.4,主要特性如下:

1) 服务端支持Lua脚本

2) 去掉虚拟内存相关功能。

3) 放开对客户端连接数的硬编码限制。

4) 键的过期时间支持毫秒。

5) 从节点提供只读功能。

6) 两个新的位图命令:bitcount和bitop。

7) 增强了redis-benchmark的功能:支持定制化的压测,CSV输出等功能。

8) 基于浮点数自增命令:incrbyfloat和hincrbyfloat。

9) redis-cli可以使用–eval参数实现Lua脚本执行。

10) shutdown命令增强。

11) info可以按照section输出,并且添加了一些统计项。

12) 重构了大量的核心代码,所有集群相关的代码都去掉了,cluster功能将会是3.0版本最大的亮点。

13) sort命令优化。

Redis2.8

Redis2.8在2013年11月22日正式发布 经历了24个版本,到2.8.24版本,相比于Redis2.6,主要特性如下:

1) 添加部分主从复制的功能,在一定程度上降低了由于网络问题, 造成频繁全量复制生成RDB对系统造成的压力。

2) 尝试性地支持IPv6。

3) 可以通过config set命令设置maxclients。

4) 可以用bind命令绑定多个IP地址。

5) Redis设置了明显的进程名,方便使用ps命令查看系统进程。

6) config rewrite命令可以将config set持久化到Redis配置文件中。

7) 发布订阅添加了pubsub命令。

8) Redis Sentinel第二版,相比于Redis2.6的Redis Sentinel,此版本已经变成生产可用。

Redis3.0

Redis3.0在2015年4月1日正式发布,截止到本书完成已经到3.0.7版本,相比于Redis2.8主要特性如下:

Redis3.0最大的改动就是添加Redis的分布式实现Redis Cluster,填补了Redis官方没有分布式实现的空白。Redis Cluster经历了4年才正式发布也是有原因的,具体可以参考Redis Cluster的开发日志

1) Redis Cluster: Redis的官方分布式实现。

2) 全新的embedded string对象编码结果,优化小对象内存访问,在特定的工作负载下速度大幅提升。

3) lru算法大幅提升。

4) migrate连接缓存, 大幅提升键迁移的速度。

5) migrate命令两个新的参数copy和replace。

6) 新的client pause命令,在指定时间内停止处理客户端请求。

7) bitcount命令性能提升。

8) config set设置maxmemory时候可以设置不同的单位(之前只能是字节),例如config set
maxmemory1gb。

9) Redis日志小做调整:日志中会反应当前实例的角色(master或者slave)。
10) incr命令性能提升。

Redis3.2

Redis3.2在2016年5月6日正式发布,相比于Redis3.0主要特征如下:

1) 添加GEO相关功能。

2) SDS在速度和节省空间上都做了优化。

3) 支持用upstart或者systemd管理Redis进程。

4) 新的List编码类型:quicklist。

5) 从节点读取过期数据保证一致性。

6) 添加了hstrlen命令。

7) 增强了debug命令 支持了更多的参数。

8) Lua脚本功能增强。

9) 添加了Lua Debugger。

10) config set支持更多的配置参数。

11) 优化了Redis崩溃后的相关报告。

12) 新的RDB格式,但是仍然兼容旧的RDB。

13) 加速RDB的加载速度。

14) spop命令支持个数参数。

15) cluster nodes命令得到加速。

16) Jemalloc更新到4.0.3版本。

Redis4.0

可能出乎很多人的意料,Redis3.2之后的版本是4.0,而不是3.4、3.6、3.8。一般这种重大版本号的升级也意味着软件或者工具本身发生了重大变革,直到本书截稿前,Redis发布了4.0-RC2,下面列出Redis4.0的新特性:

1) 提供了模块系统,方便第三方开发者拓展Redis的功能,更多模块详见:http://redismodules.com。

2) PSYNC2.0:优化了之前版本中,主从节点切换必然引起全量复制的问题。

3) 提供了新的缓存剔除算法:LFU(Last Frequently Used),并对已有算法进行了优化。

4) 提供了非阻塞del和flushall/flushdb功能,有效解决删除bigkey可能造成的Redis阻塞。

5) 提供了RDB-AOF混合持久化格式,充分利用了AOF和RDB各自优势。

6) 提供memory命令,实现对内存更为全面的监控统计。

7) 提供了交互数据库功能,实现Redis内部数据库之间的数据置换。

8) Redis Cluster兼容NAT和Docker。

Redis5.0

Redis 5.0在2018年10月正式发布,相比于Redis4.0主要特征如下:

1) 新的流数据类型(Stream data type) https://redis.io/topics/streams-intro

2) 新的 Redis 模块 API:定时器、集群和字典 API(Timers, Cluster and Dictionary APIs)

3) RDB 增加 LFU 和 LRU 信息

4) 集群管理器从 Ruby (redis-trib.rb) 移植到了redis-cli 中的 C 语言代码

5) 新的有序集合(sorted set)命令:ZPOPMIN/MAX 和阻塞变体(blocking variants)

6) 升级 Active defragmentation 至 v2 版本

7) 增强 HyperLogLog 的实现

8) 更好的内存统计报告

9) 许多包含子命令的命令现在都有一个 HELP 子命令

10) 客户端频繁连接和断开连接时,性能表现更好

11) 许多错误修复和其他方面的改进

12) 升级 Jemalloc 至 5.1 版本

13) 引入 CLIENT UNBLOCK 和 CLIENT ID

14) 新增 LOLWUT 命令 http://antirez.com/news/123

15) 在不存在需要保持向后兼容性的地方,弃用 “slave” 术语

16) 网络层中的差异优化

17) Lua 相关的改进

18) 引入动态的 HZ(Dynamic HZ) 以平衡空闲 CPU 使用率和响应性

19) 对 Redis 核心代码进行了重构并在许多方面进行了改进

Redis6.0

Redis 6.0在2020年5月正式发布,相比于Redis5.0主要特征如下:

1)ACL权限管控(包括ACL LOG)

2)客户端缓冲(Client side caching)

3)多线程 IO(Threaded I/O)

4)Redis集群代理

5)支持linux/bsd系统的CPU和线程(包括子线程如aof\rdb\IO线程)亲和力绑定

6)过期Key回收优化,新增主动配置参数

7)Resp3协议,兼容Resp2并更加简单、高效

8)优化了INFO命令,使之执行更快,优化了所有的阻塞命令,复杂度从O(n)到O(1),RDB加载速度优化,集群Slots命令优化,Psync2优化,修复了5.0的链式复制不一致问题。defrag优化,从试验版到正式版

9)新的module API

10)disque消息队列模块(module)

11)新增配置使Del命令如unlink执行

12)XINFO STREAM FULL流命令

13)CLIENT KILL USER username命令

14)全面支持SSL协议、并新增TSL协议

15)Redis-benchmark支持集群模式

16)重写 Systemd 支持

17)新增配置参数来删除用于在非持久性实例中进行复制的RDB文件

18)无磁盘复制副本(Diskless replication on replicas),从测试版优化,目前无磁盘复制在load
rdb仍是测试版。

Redis7.0

Redis 7.0 RC1 于 2022 年 1 月 31 日发布,主要特性如下

1)Redis 函数:使用服务器端脚本扩展 Redis 的新方法

2) ACL:细粒度的基于密钥的权限,允许用户支持多个带有选择器的命令规则集

3) 集群:分片(特定于节点)发布/订阅支持
https://redis.io/topics/pubsub#sharded-pubsub

4) 在大多数情况下对子命令的一流处理

5) 命令元数据和文档 [https://redis.io/commands/command-docs,
https://redis.io/topics/command-tips](https://redis.io/commands/command-docs, https://redis.io/topics/command-tips)

6)命令键规格。一种更好的方式让客户找到关键论点及其读/写目的
https://redis.io/topics/key-specs
7)多部分 AOF 机制避免 AOF 重写开销

8)集群:支持主机名,而不仅仅是 IP 地址

9)改进了对网络缓冲区消耗的内存的管理,以及一个选项当总内存超过限制时删除客户端

10)Cluster:一种断开集群总线连接的机制,以防止不受控制的缓冲区增长

11)AOF:时间戳注释和对时间点恢复的支持

12)Lua:支持 EVAL
脚本中的函数标志https://redis.io/topics/eval-intro#eval-flags

13)Lua: 支持 Verbatim 和 Big-Number 类型的 RESP3 回复

14)Lua: 通过 redis.REDIS_VERSION, redis.REDIS_VERSION_NUM 获取 Redis 版本

与[转帖]【Redis系列】Redis发布版本历史及特性相似的内容:

[转帖]【Redis系列】Redis发布版本历史及特性

目录 概述Redis2.6Redis2.8Redis3.0Redis3.2Redis4.0Redis5.0Redis6.0Redis7.0 概述 Redis 使用标准版本标记进行版本控制:major.minor.patchlevel。 偶数的版本号表示稳定的版本, 例如 1.2,2.0,2.2,2.

[转帖]抛砖系列之redis监控命令

处理一下.. 前言 redis是一款非常流行的kv数据库,以高性能著称,其高吞吐、低延迟等特性让广大开发者趋之若鹜,每每看到别人发出的redis故障报告都让我产生一种居安思危,以史为鉴的危机感,恰逢今年十一西安烟雨不断,抽时间学习了几个redis监控命令,和大家分享一波。 redis-cli --s

[转帖]Redis进阶实践之六Redis Desktop Manager连接Windows和Linux系统上的Redis服务

https://www.cnblogs.com/PatrickLiu/p/8360057.html 一、引言 今天本来没有打算写这篇文章,但是,今天测试Redis的时候发现了两个问题,第一个问题是:Redis Desktop Manager无法连接虚拟机上Linux系统上的Redis服务,第二个问题

[转帖]redis bigkey 删除问题

一、慢操作分析 redis 的慢操作已经有了,如果没有,我们可以自己去 redis 服务器查看历史的慢日志操作,或者有对应的慢操作监控系统也可以发现问题,这里不做展开。 接下来我们就要看一看为什么这么慢。 看了下项目中的实现代码,结合日志一分析,发现是一个 redis bigkey。 一个 redi

[转帖]REDIS SLOWLOG(慢日志)

slowlog 此命令用于读取和重置Redis慢查询日志。 一、Redis slowlog 官方概述: Redis Slow Log是一个用于记录超过指定执行时间的查询的系统。执行时间不包括与客户端交谈,发送答复等I / O操作,而仅包括实际执行命令所需的时间(这是命令执行的唯一阶段,在该阶段线程被

[转帖]Redis系列(十五)、Redis6新特性之集群代理(Cluster Proxy)

在之前的文章中介绍了Redis6的集群搭建和原理,我们可以使用dummy和smart客户端连接集群,本篇介绍Redis6新增的一个功能:集群代理。客户端不需要知道集群中的具体节点个数和主从身份,可以直接通过代理访问集群,对于客户端来说通过集群代理访问的集群就和单机的Redis一样,因此也能解决很多集

[转帖]Redis系列(十六)、Redis6新特性之IO多线程

https://blog.csdn.net/wsdc0521/article/details/106766587 终于,Redis的多线程版本横空出世,大大提高了并发,本篇就带大家来看看什么是IO多线程,和我们理解的多线程有什么区别,与Memcached的多线程又有什么区别。 目录 介绍 为什么Re

[转帖]Redis系列(十七)、Redis中的内存淘汰策略和过期删除策略

我们知道Redis是分布式内存数据库,基于内存运行,可是有没有想过比较好的服务器内存也不过几百G,能存多少数据呢,当内存占用满了之后该怎么办呢?Redis的内存是否可以设置限制? 过期的key是怎么从内存中删除的?不要怕,本篇我们一起来看一下Redis的内存淘汰策略是如何释放内存的,以及过期的key

[转帖]Redis系列(十五)、Redis6新特性之集群代理(Cluster Proxy)

在之前的文章中介绍了Redis6的集群搭建和原理,我们可以使用dummy和smart客户端连接集群,本篇介绍Redis6新增的一个功能:集群代理。客户端不需要知道集群中的具体节点个数和主从身份,可以直接通过代理访问集群,对于客户端来说通过集群代理访问的集群就和单机的Redis一样,因此也能解决很多集

[转帖]玩转REDIS-删除了两百万KEY,为什么内存依旧未释放?

https://www.freesion.com/article/87101375552/ 《玩转Redis》系列文章主要讲述Redis的基础及中高级应用。本文是《玩转Redis》系列第【12】篇,最新系列文章请前往公众号“zxiaofan”(点我点我)查看,或百度搜索“玩转Redis zxiaof