当前位置: 首页 > news >正文

Redis重大版本演进全解析:从2.6到7.0

目录

一、Redis 重大版本演进详述

1、Redis 2.6

2、Redis 2.8

3、Redis 3.0

4、Redis 3.2

5、Redis 4.0

6、Redis 5.0

7、Redis 6.0

8、Redis 7.0

二、安装并启动 Redis(先了解)


一、Redis 重大版本演进详述

       Redis 在版本命名规则上借鉴了 Linux 操作系统的成熟经验:版本号的第二位数字若为奇数,则代表该版本为非稳定版本(例如 2.7、2.9、3.1),主要用于新功能的开发与测试;若为偶数,则代表稳定版本(例如 2.6、2.8、3.0、3.2),适合在生产环境中使用。当前,奇数版本实际上是下一个稳定版本的开发预览版,例如 2.9 版本即为 3.0 版本的开发基础。因此,在生产环境中,我们通常推荐使用偶数版本的 Redis;若希望提前体验并测试新功能,则可选择最新的奇数版本。截至目前,Redis 的最新版本为 7.0。以下,我们将对 Redis 发展历程中的一些重要版本及其特性进行详细阐述。

1、Redis 2.6

Redis 2.6 于 2012 年正式发布,相较于 Redis 2.4,其主要特性包括:

  • 服务端 Lua 脚本支持:允许在服务端执行 Lua 脚本,增强灵活性。

  • 虚拟内存功能移除:简化了内存管理,提高了系统稳定性。

  • 客户端连接数硬编码限制解除:允许更灵活的客户端连接管理。

  • 键过期时间支持毫秒级:提高了时间控制的精度。

  • 从节点只读功能:增强了数据的安全性和一致性。

  • 新增位图命令:bitcount 和 bitop,丰富了位图操作。

  • redis-benchmark 功能增强:支持定制化压测和 CSV 格式输出。

  • 浮点数自增命令:incrbyfloat 和 hincrbyfloat,扩展了数值操作。

  • redis-cli 支持 Lua 脚本执行:通过 --eval 参数实现。

  • shutdown 命令增强:提供了更安全的关闭方式。

  • Info 命令输出优化:可按 section 输出,并添加了统计项。

  • 核心代码重构:移除了所有集群相关代码,为 3.0 版本的 cluster 功能做准备。

  • sort 命令优化:提高了排序效率。

2、Redis 2.8

Redis 2.8 于 2013 年发布,相较于 Redis 2.6,其主要改进包括:

  • 部分主从复制功能:降低了网络问题导致的全量复制压力。

  • IPv6 尝试性支持:为未来的网络扩展打下基础。

  • maxclients 参数可通过 config set 命令设置:提高了配置的灵活性。

  • bind 命令支持绑定多个 IP 地址:增强了网络访问控制。

  • 明显的进程名设置:方便使用 ps 命令查看系统进程。

  • config rewrite 命令:将 config set 持久化到 Redis 配置文件中。

  • 发布订阅添加 pubsub 命令:丰富了发布订阅功能。

  • Redis Sentinel 第二版:生产环境可用性得到提升。

3、Redis 3.0

Redis 3.0 于 2015 年发布,相较于 Redis 2.8,其主要特性包括:

  • Redis Cluster:官方分布式实现,提高了系统的可扩展性和容错性。

  • 全新的 embedded string 对象编码结构:优化了小对象内存访问,提高了下载速度。

  • LRU 算法优化:大幅提升了性能。

  • migrate 链接缓存:提高了键迁移的速度。

  • migrate 命令新增参数:copy 和 replace,增强了迁移的灵活性。

  • client pause 命令:在指定时间内停止处理客户端请求,便于维护。

  • bitcount 命令性能提升:提高了位图统计的效率。

  • config set 设置 maxmemory 支持不同单位:提高了内存管理的灵活性。

  • Redis 日志调整:日志中会反映当前实例的角色(master 或 slave)。

  • incr 命令性能提升:提高了数值自增的效率。

4、Redis 3.2

Redis 3.2 于 2016 年发布,相较于 Redis 3.0,其主要改进包括:

  • 添加 GEO 相关功能:支持地理位置数据的存储和查询。

  • SDS 优化:在速度和节省空间上都进行了优化。

  • 支持 upstart 或 systemd 管理 Redis 进程:提高了进程管理的便利性。

  • 新的 List 编码类型:quicklist,提高了列表操作的效率。

  • 从节点读取过时数据保证一致性:增强了数据的一致性。

  • 添加 hstrlen 命令:丰富了哈希表的操作。

  • debug 命令加强:支持了更多的参数,便于调试。

  • Lua 脚本功能加强:并添加了 Lua Debugger,提高了脚本开发的便利性。

  • config set 支持更多配置参数:提高了配置的灵活性。

  • 优化了 Redis 崩溃后的相关报告:便于问题排查。

  • 新的 RDB 格式:兼容旧的 RDB 格式,提高了持久化的效率。

  • 加速 RDB 的加载速度:提高了系统启动的速度。

  • spop 命令支持个数参数:丰富了集合操作。

  • cluster nodes 命令获得加速:提高了集群管理的效率。

  • Jemalloc 更新到 4.0.3 版本:提高了内存管理的效率。

5、Redis 4.0

Redis 4.0 于 2017 年发布,相较于 Redis 3.2,其主要特性包括:

  • 模块系统(module):方便第三方开发者拓展 Redis 的功能。

  • PSYNC 2.0:优化了主从节点切换时的全量复制问题。

  • 新的缓存剔除算法:LFU(Last Frequently Used),基于访问次数进行淘汰,并对已有算法进行了优化。

  • 非阻塞 del 和 flushall/flushdb 功能:新增了 unlink 命令,实现了删除操作的异步执行。

  • memory 命令:实现了对内存更为全面的监控统计。

  • 交互数据库功能:实现了 Redis 内部数据库的数据置换。

  • RDB-AOF 混合持久化格式:充分利用了 AOF 和 RDB 的各自优点。

  • Redis Cluster 兼容 NAT 和 docker:提高了集群的部署灵活性。

6、Redis 5.0

Redis 5.0 于 2018 年发布,相较于 Redis 4.0,其主要改进包括:

  • 新的流数据类型(stream):支持消息队列和日志收集等场景。

  • 新的 Redis 模块 API:定时器、集群和字典 API,扩展了模块开发的能力。

  • RDB 可存储 LFU 和 LRU 信息:提高了缓存淘汰的准确性。

  • redis-cli 中的集群管理器移植到 C 语言代码:提高了集群管理的效率。

  • 新的有序集合命令:zpopmin/zpopmax 和阻塞变体,丰富了有序集合的操作。

  • Active defragmentation 升级至 v2 版本:提高了内存碎片整理的效率。

  • HyperLogLog 实现增强:提高了基数统计的准确性。

  • 更好的内存统计报告:便于内存管理和优化。

  • 许多包含子命令的命令现在都有一个 help 子命令:提高了命令使用的便利性。

  • 客户端频繁连接和断开连接时性能表现更好:提高了系统的稳定性。

  • 许多错误修复和其他方面的改进:提高了系统的健壮性。

  • Jemalloc 升级至 5.1 版本:提高了内存管理的效率。

  • 引入 client unblock 和 client id:增强了客户端管理的灵活性。

  • 新增 lolwut 命令:提供了有趣的系统信息展示。

  • 弃用 "slave" 术语:在不存在需要保持向后兼容性的地方,使用了更中性的术语。

  • 网络层中的差异优化:提高了网络通信的效率。

  • 增强对 Lua 的支持:将 Lua 脚本更好地传播到 replicas/AOF,Lua 脚本现在可以超时并在副本中进入 -BUSY 状态。

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

  • 对 Redis 核心代码进行了重构并在许多方面进行了改进:提高了系统的整体性能。

7、Redis 6.0

Redis 6.0 于 2020 年发布,相较于 Redis 5.0,其主要特性包括:

  • 多线程 IO:引入多线程处理网络数据的读写和协议解析,但执行命令仍然是单线程,提高了系统的吞吐量。

  • client-side-caching(客户端缓存)功能:放弃了 caching slot,只使用 key names,提高了数据访问的效率。

  • 支持 RESP 3:在兼容 RESP 2 的基础上,开始支持 RESP 3(Redis Serialization Protocol 是 Redis 服务端与客户端之间通信的协议),提高了通信的效率。

  • 连接支持 SSL:更加安全,保护了数据传输的安全性。

  • 增强 ACL 权限控制:支持对客户端的权限控制,实现对不同的 key 授予不同的操作权限,新增了一个新的 ACL 日志命令,允许查看所有违反 ACL 的客户端、访问不应该访问的命令、访问不应该访问的密钥,或者验证尝试失败,这对于调试 ACL 问题非常有用。

  • 提升了 RDB 日志加载速度:提高了系统启动的速度。

  • 发布官方的 Redis 集群代理模块 Redis Cluster Proxy:简化了集群的管理和访问。

  • 提供了众多的新模块(modules)API:扩展了 Redis 的功能。

8、Redis 7.0

Redis 7.0 于 2022 年发布,相较于 Redis 6.0,其主要改进包括:

  • AOF 文件存储方式改变:将 AOF 文件的存储方式改为在一个文件夹下存储多个文件,提高了文件管理的灵活性。

  • RDB 文件版本升级:将持久化文件 RDB 的版本升级为 10,与之前的 RDB 文件版本不再兼容,但提供了更好的性能和功能。

  • ziplist 转换为 listpack:在读取老的 RDB 文件格式的时候,将 ziplist 转换为 listpack,这种转换发生于两种情况之下:从磁盘读取文件或者从一个主节点进行复制文件的时候,提高了数据解析的效率。

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

  • ACL 中 pub/sub channel 默认被阻塞:增强了系统的安全性。

  • 从节点中 TTL 时间标识为绝对时间:不再是相对时间,从而保证了过期数据被及时删除,提高了数据的一致性。

  • 不再支持 gopher 协议:简化了协议支持,提高了系统的安全性。

  • 当在配置文件中设置 replica-serve-stale-data=no 时,当主节点不再提供服务时,ping 命令得不到返回值:提高了系统的故障检测能力。


二、安装并启动 Redis(先了解)

        在上一节中,我们大致了解了 Redis 的几个重大版本。在本教程中,我们选择 Redis 5.0 版本进行介绍,原因是 Redis 5.0 已经支持了大部分的功能特性,而且相较于 Redis 7.0 版本,更容易进行安装和使用。

        需要注意的是,Redis 的官方并不支持微软的 Windows 操作系统。这是因为 Redis 的许多特性都是和操作系统紧密相关的,支持 Windows 会增加维护成本。更重要的是,大部分公司都在使用 Linux 操作系统,而 Redis 在 Linux 操作系统上的表现已经得到了实践的证明。当然,Redis 作为一款优秀的开源技术,还是吸引到了微软公司的注意。微软公司的开源技术组在 Github 上维护了一个 Redis 分支:GitHub - microsoftarchive/redis: Redis is an in-memory database that persists on disk. The data model is key-value, but many different kind of values are supported: Strings, Lists, Sets, Sorted Sets, Hashes不过我们还是强烈建议大家在Linux 上使用 Redis,以获得最佳的性能和稳定性。

        接下来,我们将介绍在 Linux 上安装 Redis 的方法。由于安装过程涉及多个步骤和细节,我将在后续的博客中更新详细的安装过程。本博客将简要介绍安装的两个版本选择:

  • 在 Ubuntu 20.04 上安装 Redis:Ubuntu 是一款流行的 Linux 发行版,适合初学者和开发者使用。

  • 在 CentOS 7/8 上安装 Redis:CentOS 是一款稳定的企业级 Linux 发行版,适合在生产环境中使用。

具体的安装步骤和配置方法,请关注后续的博客更新。我们将提供详细的安装指南和配置说明,帮助大家顺利安装并启动 Redis。

安装 Redis Redis 5 系列,在 Linux 系统下安装 Redis:

  • Redis 官方不支持 Windows 版本
  • 微软维护了一个 Windows 版本的 Redis 分支
  • 支持 CentOS 和 Ubuntu 系统
  • 推荐使用 Docker 部署

学习建议:初学阶段建议在本地安装、学习 Redis 集群功能时再使用 Docker 环境

http://www.dtcms.com/a/469833.html

相关文章:

  • mysql高可用架构之MHA部署(二)VIP漂移(保姆级)
  • 【从零开始java学习|第二十二篇】集合进阶之collection
  • 活动回顾 | AutoMQ 新加坡 TOKEN2049:展示高效 Web3 数据流基础设施
  • 多字节串口收发IP设计(四)串口接收模块设计及联合仿真(含源码)
  • 封装相关学习
  • 成都网站优化方案wordpress cms主题教程
  • 网络原理基础
  • aws s3设置跨域,s3配置预签名,aws 配置文件上传
  • 18芯城网站开发案例国内简约网站设计
  • 网站开发用什么字体一般域名的作用
  • 『 QT 』Hello World控件实现指南
  • 【CF】Day148——Codeforces Round 1057 (Div. 2) CD (非退化凸多边形的分类讨论 | 破环成链动态规划)
  • 网站建设教程金旭亮wordpress自动加p标签
  • 使用C#代码将ODT转换为PDF文件
  • 【网络编程】详解 IP 协议:报头字段、路由器功能、网段划分和分片传输
  • 大模型微调 SFTTrainer 数据处理与训练器配置解析(116)
  • gtest简单应用
  • 访答知识库,企业知识库,访答浏览器,Al编辑器,RAG,Pdf转word。个人知识库,访答RAG,云知识库,私有知识库……
  • 通过企业画册宣传_网络网站建设_新闻媒体合作等方式_企业营销网站制作
  • BERT相关知识自测
  • 【完整源码+数据集+部署教程】 真菌孢子图像分割系统源码&数据集分享 [yolov8-seg-convnextv2等50+全套改进创新点发刊_一键训练
  • 遵义市网站制作如何申请域名网站注册
  • GitHub 热榜项目 - 日榜(2025-10-11)
  • MySQL数据库之DBA命令
  • 4.打造个人Z-Library镜像
  • CoRL-2025 | 物体相对控制赋能具身导航!ObjectReact:学习用于视觉导航的物体相对控制
  • 长春seo网站优化做企业网站接单
  • word超链接网站怎么做网站建设网页设计网站模板
  • spring boot 整合 activiti 教程
  • 免费网站电视剧下载不支持下载的视频怎么保存下来