蓝盟IT外包,Redis  6.0多线程的秘密之一

发布者:上海IT外包来源:http://www.lanmon.net点击数:902

蓝盟IT小贴士 ,来喽!
1 .老字号八股面试问题
我们经常听说烂大街的面试问题吧。
Redis为什么选择单线程?
这个问法其实不严密。 为什么呢?
Redis的版本多为3.x、4.x、6.x,架构因版本而异,所以不限定版本地问这样的问题,是不是有点狡猾呢?
限定版本后,例如4.x,严格来说Redis也不是单线程,处理客户端请求的线程是单线程。
最新版本6.0与您想象中的单线程告别,并通过新的多线程解决问题。
如果你这样回答的话,面试官会这么想的吧。
啊,我见到了专家。 反正这个问题我也不太清楚,我们好好问问他怎么解决吧。
Redis的版本迭代和里程碑
Redis已发行10多年,并且遵守自己的命名约定:
编号第2位为奇数时,为不稳定版本,例如2.7、2.9、3.1
版本号第2位为偶数时,为稳定版本,例如2.6、2.8、3.0、3.2
当前的奇数版本是下一个稳定版本的开发版本,例如2.9版本是3.0版本的开发版本
在生产环境中通常选择并部署稳定的版本。 每个主要版本之间有几个次要版本。 目前的最新版本是6.2.2。
我们可以从redis.io官网下载自己感兴趣的版本,然后阅读源代码:
发行记录的源代码
5.0版直接升级到6.0版,antirez对这种激进的升级表现出了信心和兴奋,所以首先是6.0的重要功能' Redis  6.0.0 GA  is  out!' 发表:

注: GA是通用可用的缩写,意味着开发团队将这个版本识别为稳定版。
这么扯的是,我希望你能弄清楚Redis是随着时代而进化的。 别以为Redis一直是那个单线程。
2 .不同的Redis之父
我们经常说字像人,但对我们程序员来说,代码也像人,很合适。
从多个历史版本中,我隐约感觉到Redis的父亲Antirez是个特别的人。
大白你说的不是废话吗,毕竟是顶尖的扛把子程序员,怎么能轻易随波逐流呢?
集群计划
Redis独立版出来后,官方集群版推迟发布。 这时,业界提出了几个集群方案。 代表性的是codis和Tweproxy。 这两个方案都是中心化的方案和中层的思想。由于市场需求旺盛,这两个方案很快就被许多公司应用于生产环境,但官方集群方案迟迟没有出台。 这个一等奖是4年,直到2015年4月1日才公布。
同样,Antirez还是兴奋地发了一篇文章“Redis  cluster,no  longer  vaporware  .”

备注:标题可以翻译为Redis集群,不再是幻想。
在官方集群方案中,采用了P2P模式去中心化的思想、基于slot的一致性散列的实现、基于gossip协议的集群通信的实现,使整体架构更加简洁。
3.Redis  6.0多线程的神秘面纱
Redis作为存储型NoSQL可以说是高性能的代名词,在生产环境中数万QPS是家常便饭。
请考虑一下。 Redis如何提高性能呢? 这恐怕也是Redis父亲苦苦思索的问题。
小偷要先抓住国王,提高性能,就得看他掐的是什么脖子。
Redis的瓶颈是什么
多线程通常对提高CPU使用率有重要作用,但Redis对提高CPU使用率并不感冒。 从Redis的角度来看,要提高CPU利用率,在一台机器上部署多个实例就可以了。
其实Redis那么喜爱单线程,一定是尝到了单线程的甜头:
业务模式简单,同时读写也没问题
单线程完全无锁定无死锁无线程开关损耗,性能贼好
在处理底层复杂的数据结构时,电缆的安全性得到了保证,因此十分放心
…。
其实在Redis  4.0中引入了多个线程来实现数据的异步删除等功能,但是由于处理读写请求的只有一个线程,所以仍然是狭义的单线程。
抛弃CPU后,影响Redis性能的地方主要是存储器和网络IO。

文/上海蓝盟  IT外包专家

IT外包
>
400-635-8089
立即
咨询
电话咨询
服务热线
400-635-8089
微信咨询
微信咨询
微信咨询
公众号
公众号
公众号
返回顶部