【Redis】2.Redis重大版本

文章目录

  • [1. 初识 Redis](#1. 初识 Redis)
    • [1.4 Redis 重大版本](#1.4 Redis 重大版本)
      • [1.4.1 Redis 2.6](#1.4.1 Redis 2.6)
      • [1.4.2 Redis 2.8](#1.4.2 Redis 2.8)
      • [1.4.3 Redis 3.0](#1.4.3 Redis 3.0)
      • [1.4.4 Redis 3.2](#1.4.4 Redis 3.2)
      • [1.4.5 Redis 4.0](#1.4.5 Redis 4.0)
      • [1.4.6 Redis 5.0](#1.4.6 Redis 5.0)
      • [1.4.7 Redis 6.0](#1.4.7 Redis 6.0)
      • [1.4.8 Redis 7.0](#1.4.8 Redis 7.0)

1. 初识 Redis

1.4 Redis 重大版本

Redis 借鉴了 Linux 操作系统对于版本号的命名规则:版本号第二位如果是奇数,则为非稳定版本(例如 2.7、2.9、3.1),如果是偶数,则为稳定版本(例如 2.6、2.8、3.0、3.2)。当前奇数版本就是下一个稳定版本的开发版本,例如 2.9 版本是 3.0 版本的开发版本。所以我们生产环境通常选取偶数版本的 Redis,如果对于某些新的特性想提前了解和使用,可以选择最新的奇数版本。目前最新的版本是 7.0 版本。


1.4.1 Redis 2.6

Redis 2.62012 年正式发布,相比于 Redis 2.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 可以按照 setction 输出,并且添加了一些统计项。
  12. 重构了大量的核心代码,所i有集群相关的代码都去掉了,会在 3.0 支持 cluster 功能。
  13. sort 命令优化。

1.4.2 Redis 2.8

Redis 2.82013 年正式发布,相比于 Redis 2.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 第二版,相比于 Redis 2.6Redis Sentinel,此版本已经变成生产可用。

1.4.3 Redis 3.0

Redis 3.02015 年正式发布,相比于 Redis 2.8,主要特性如下:

  1. Redis ClusterRedis 提供的官方分布式实现。
  2. 全新的 embedded string 对象编码结果,优化了小对象内存访问,在特定的工作负载时,下载速度大幅提高。
  3. 优化了 LRU 算法,大幅提供性能。
  4. migrate 链接缓存,大幅提供键迁移的速度。
  5. migrate 命令新增两个参数:copyreplace
  6. client pause 命令,在指定时间内中止处理客户端请求。
  7. bitcount 命令性能提高。
  8. config set 设置 maxmemory 时候能够设置不一样的单位(以前只能是字节)。
  9. Redis日志小作调整:日志中会反应当前实例的角色(master 或者 slave)。
  10. incr命令性能提高。

1.4.4 Redis 3.2

Redis 3.22016 年正式发布,相比于 Redis 3.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 版本。

1.4.5 Redis 4.0

Redis 4.02017 年正式发布,相比于 Redis 3.2,主要特性如下:

  • 提供了模块系统(module),方便第三方开发者拓展 Redis 的功能。
  • PSYNC 2.0:优化了以前版本中,主从节点切换必然引发全量复制的问题。
  • 提供了新的缓存剔除算法:LFULast Frequently Used),注意 LFULRU 算法的不同之处,LRU 的淘汰规则是基于访问时间,而 LFU 是基于访问次数的,并对已有算法进行了优化。
  • 提供了非阻塞 del 和 flushall / flushdb 功能,新添加了 unlink 命令, 这个命令是 del 命令的异步版本, 它可以将删除指定键的操作放在后台线程里面执行。
  • 提供了 memory 命令,实现对内存更为全面的监控统计。
  • 提供了交互数据库功能,实现 Redis 内部数据库的数据置换。
  • 提供了 RDB-AOF 混合持久化格式,充分利用了 AOFRDB 各自优点。
  • Redis Cluster 兼容 NATdocker

1.4.6 Redis 5.0

Redis 5.02018 年正式发布,相比于 Redis 4.0,主要特性如下:

  1. 新的流数据类型(stream)。
  2. 新的 Redis 模块 API:定时器、集群和字典 API
  3. RDB 现在可存储 LFULRU 信息。
  4. redis-cli 中的集群管理器从 Rubyredis-trib.rb)移植到了 C 语言代码。执行 redis-cli --cluster help 命令以了解更多信息。
  5. 新的有序集合(sorted set)命令:zpopmin / zpopmax 和阻塞变体(blocking variants)。
  6. 升级 Active defragmentationv2 版本。
  7. 增强 HyperLogLog 的实现。
  8. 更好的内存统计报告。
  9. 许多包含子命令的命令现在都有一个 help 子命令。
  10. 客户端频繁连接和断开连接时,性能表现更好。
  11. 许多错误修复和其他方面的改进。
  12. 升级 Jemalloc5.1 版本。
  13. 引入 client unblockclient id
  14. 新增 lolwut 命令。
  15. 在不存在需要保持向后兼容性的地方,弃用 "slave" 术语。
  16. 网络层中的差异优化。
  17. 增强对 Lua 的支持:将 Lua 脚本更好地传播到 replicas / AOFLua 脚本现在可以超时并在副本中进入 -BUSY 状态。
  18. 引入动态的 HZ(Dynamic HZ)以平衡空闲 CPU 使用率和响应性。
  19. Redis 核心代码进行了重构并在许多方面进行了改进。

1.4.7 Redis 6.0

Redis 6.02020 年正式发布,相比于 Redis 5.0,主要特性如下:

  1. Redis 6.0 引入多线程 IO,但多线程部分只是用来处理网络数据的读写和协议解析,执行命令仍然是单线程。
  2. 实现了client-side-caching(客户端缓存)功能。放弃了caching slot,而只使用 key names
  3. Redis 6.0 开始在兼容 RESP 2 的基础上,开始支持 RESP 3RESP,Redis Serialization ProtocolRedis 服务端与客户端之间通信的协议)。
  4. 连接支持 SSL,更加安全。
  5. 增强 ACL 权限控制:支持对客户端的权限控制,实现对不同的 key 授予不同的操作权限、新增一个新的ACL 日志命令,允许查看所有违反 ACL 的客户机、访问不应该访问的命令、访问不应该访问的密钥,或者验证尝试失败。这对于调试 ACL 问题非常有用。
  6. 提升了RDB日志加载速度。
  7. 发布官方的 Redis 集群代理模块 Redis Cluster Proxy
  8. 提供了众多的新模块(modulesAPI

1.4.8 Redis 7.0

Redis 7.02022 年正式发布,相比于 Redis 6.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 命令得不到返回值。
相关推荐
流星白龙1 小时前
【Redis】7.Hash表
数据库·redis·哈希算法
流星白龙2 小时前
【Redis】4.基本全局命令
数据库·redis·缓存
王八八。3 小时前
Navicat 17破解版下载安装教程 附安装激活步骤(2026 最新版)
数据库·navicat
Jelena157795857924 小时前
电商运营分析数据比价接口实战:多平台价格监控与智能决策系统
java·大数据·数据库
流星白龙5 小时前
【Redis】3.Redis安装与命令行客户端
数据库·redis·缓存
凌虚6 小时前
基于 PostgreSQL WAL 构建 CDC 系统:原理与工程实现
数据库·后端·postgresql
BullSmall6 小时前
PostgreSQL 14 pg_dumpall 完整备份指南
数据库·postgresql·oracle
一只枫林7 小时前
MySQL内、外连接知识点汇总
java·前端·数据库
暮暮祈安7 小时前
Celery 新手入门指南
java·数据库·python·flask·httpx