百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术教程 > 正文

redis从2.x-3.x-4.x-5.x各版本特性及优化点

mhr18 2024-11-02 11:55 21 浏览 0 评论

1.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命令优化。

2.Redis2.8

Redis2.8在2013年11月22日正式发布,经历了24个版本,到2.8.24版本,

相比于Redis2.6,主要特性如下:

1)添加部分主从复制的功能,在一定程度上降低了由于网络问题,造

成频繁全量复制生成RDB对系统造成的压力。

2)尝试性地支持IPv6。

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

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

54

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

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

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

8)Redis Sentinel第二版,相比于Redis2.6的Redis Sentinel,此版本已经

变成生产可用。

3.Redis3.0

Redis3.0在2015年4月1日正式发布,截止到本书完成已经到3.0.7版本,

相比于Redis2.8主要特性如下:

注意

Redis3.0最大的改动就是添加Redis的分布式实现Redis Cluster,填补了

Redis官方没有分布式实现的空白。Redis Cluster经历了4年才正式发布也是

有原因的,具体可以参考Redis Cluster的开发日志

(http://antirez.com/news/79)。

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

2)全新的embedded string对象编码结果,优化小对象内存访问,在特定

的工作负载下速度大幅提升。

3)lru算法大幅提升。

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

55

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

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

7)bitcount命令性能提升。

8)config set设置maxmemory时候可以设置不同的单位(之前只能是字

节),例如config set maxmemory1gb。

9)Redis日志小做调整:日志中会反应当前实例的角色(master或者

slave)。

10)incr命令性能提升。

4.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命令,支持了更多的参数。

56

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版本。

5.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。

6.Redis5.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) redis-cli 中的集群管理器从 Ruby (redis-trib.rb) 移植到了 C 语言代码。执行 `redis-cli --cluster help` 命令以了解更多信息

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 相关的改进:

a)将 Lua 脚本更好地传播到 replicas / AOF

b)Lua 脚本现在可以超时并在副本中进入 -BUSY 状态

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

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

相关推荐

B站收藏视频失效?mybili 收藏夹备份神器完整部署指南

本内容来源于@什么值得买APP,观点仅代表作者本人|作者:羊刀仙很多B站用户都有过类似经历:自己精心收藏的视频突然“消失”,点开一看不是“已被删除”,就是“因UP主设置不可见”。而B站并不会主动通知...

中间件推荐初始化配置

Redis推荐初始化配置bind0.0.0.0protected-modeyesport6379tcp-backlog511timeout300tcp-keepalive300...

Redis中缓存穿透问题与解决方法

缓存穿透问题概述在Redis作为缓存使用时,缓存穿透是常见问题。正常查询流程是先从Redis缓存获取数据,若有则直接使用;若没有则去数据库查询,查到后存入缓存。但当请求的数据在缓存和数据库中都...

后端开发必看!Redis 哨兵机制如何保障系统高可用?

你是否曾在项目中遇到过Redis主服务器突然宕机,导致整个业务系统出现数据读取异常、响应延迟甚至服务中断的情况?面对这样的突发状况,作为互联网大厂的后端开发人员,如何快速恢复服务、保障系统的高可用...

Redis合集-大Key处理建议

以下是Redis大Key问题的全流程解决方案,涵盖检测、处理、优化及预防策略,结合代码示例和最佳实践:一、大Key的定义与风险1.大Key判定标准数据类型大Key阈值风险场景S...

深入解析跳跃表:Redis里的"老六"数据结构,专治各种不服

大家好,我是你们的码农段子手,今天要给大家讲一个Redis世界里最会"跳科目三"的数据结构——跳跃表(SkipList)。这货表面上是个青铜,实际上是个王者,连红黑树见了都要喊声大哥。...

Redis 中 AOF 持久化技术原理全解析,看完你就懂了!

你在使用Redis的过程中,有没有担心过数据丢失的问题?尤其是在服务器突然宕机、意外断电等情况发生时,那些还没来得及持久化的数据,是不是让你夜不能寐?别担心,Redis的AOF持久化技术就是...

Redis合集-必备的几款运维工具

Redis在应用Redis时,经常会面临的运维工作,包括Redis的运行状态监控,数据迁移,主从集群、切片集群的部署和运维。接下来,从这三个方面,介绍一些工具。先来学习下监控Redis实时...

别再纠结线程池大小 + 线程数量了,没有固定公式的!

我们在百度上能很轻易地搜索到以下线程池设置大小的理论:在一台服务器上我们按照以下设置CPU密集型的程序-核心数+1I/O密集型的程序-核心数*2你不会真的按照这个理论来设置线程池的...

网络编程—IO多路复用详解

假如你想了解IO多路复用,那本文或许可以帮助你本文的最大目的就是想要把select、epoll在执行过程中干了什么叙述出来,所以具体的代码不会涉及,毕竟不同语言的接口有所区别。基础知识IO多路复用涉及...

5分钟学会C/C++多线程编程进程和线程

前言对线程有基本的理解简单的C++面向过程编程能力创造单个简单的线程。创造单个带参数的线程。如何等待线程结束。创造多个线程,并使用互斥量来防止资源抢占。会使用之后,直接跳到“汇总”,复制模板来用就行...

尽情阅读,技术进阶,详解mmap的原理

1.一句话概括mmapmmap的作用,在应用这一层,是让你把文件的某一段,当作内存一样来访问。将文件映射到物理内存,将进程虚拟空间映射到那块内存。这样,进程不仅能像访问内存一样读写文件,多个进程...

C++11多线程知识点总结

一、多线程的基本概念1、进程与线程的区别和联系进程:进程是一个动态的过程,是一个活动的实体。简单来说,一个应用程序的运行就可以被看做是一个进程;线程:是运行中的实际的任务执行者。可以说,进程中包含了多...

微服务高可用的2个关键技巧,你一定用得上

概述上一篇文章讲了一个朋友公司使用SpringCloud架构遇到问题的一个真实案例,虽然不是什么大的技术问题,但如果对一些东西理解的不深刻,还真会犯一些错误。这篇文章我们来聊聊在微服务架构中,到底如...

Java线程间如何共享与传递数据

1、背景在日常SpringBoot应用或者Java应用开发中,使用多线程编程有很多好处,比如可以同时处理多个任务,提高程序的并发性;可以充分利用计算机的多核处理器,使得程序能够更好地利用计算机的资源,...

取消回复欢迎 发表评论: