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应用开发中,使用多线程编程有很多好处,比如可以同时处理多个任务,提高程序的并发性;可以充分利用计算机的多核处理器,使得程序能够更好地利用计算机的资源,...
你 发表评论:
欢迎- 一周热门
- 最近发表
- 标签列表
-
- oracle位图索引 (63)
- oracle批量插入数据 (62)
- oracle事务隔离级别 (53)
- oracle 空为0 (50)
- oracle主从同步 (55)
- oracle 乐观锁 (51)
- redis 命令 (78)
- php redis (88)
- redis 存储 (66)
- redis 锁 (69)
- 启动 redis (66)
- redis 时间 (56)
- redis 删除 (67)
- redis内存 (57)
- redis并发 (52)
- redis 主从 (69)
- redis 订阅 (51)
- redis 登录 (54)
- redis 面试 (58)
- 阿里 redis (59)
- redis 搭建 (53)
- redis的缓存 (55)
- lua redis (58)
- redis 连接池 (61)
- redis 限流 (51)