没有合适的资源?快使用搜索试试~ 我知道了~
【作者面对面问答】包邮送《Redis 5设计与源码分析》5本
11 下载量 97 浏览量
2021-01-07
12:13:07
上传
评论
收藏 418KB PDF 举报
温馨提示
试读
7页
墨墨导读:本文节选自《Redis 5设计与源码分析》,主要为读者分析Redis高性能内幕,重点从源码层次讲解了Redis事件模型,网络IO事件重在使用IO复用模型,时间事件重在限制最大执行CPU时间。最后简单介绍了Redis的进程模型(以后不要简简单单说Redis是单进程单线程了),以及使用命令时需要注意的一些耗时操作。 参与作者墨天轮作者问答(点击“阅读原文可直接参与”)将有机会获得《Redis 5设计与源码分析》包邮到家! 书籍介绍 《Redis 5设计与源码分析》 多名专家联袂推荐,资深专家联合撰写,深入理解Redis 5设计精髓 系统讲解Redis 5设计、数据结构、底层命令实现,
资源推荐
资源详情
资源评论
【作者面对面问答】包邮送《【作者面对面问答】包邮送《Redis 5设计与源码分析》设计与源码分析》5本本
墨墨导读:墨墨导读:本文节选自《Redis 5设计与源码分析》,主要为读者分析Redis高性能内幕,重点从源码层次讲解了Redis事件模型,网络IO事件重在使用IO复用模型,时间事件重在限制最大执行CPU时
间。最后简单介绍了Redis的进程模型(以后不要简简单单说Redis是单进程单线程了),以及使用命令时需要注意的一些耗时操作。 参与作者墨天轮作者问答(点击点击“阅读原文可直接参与阅读原文可直接参与”)将有机会获
得《Redis 5设计与源码分析》包邮到家!
书籍介绍书籍介绍
《Redis 5设计与源码分析》
多名专家联袂推荐,资深专家联合撰写,深入理解Redis 5设计精髓
系统讲解Redis 5设计、数据结构、底层命令实现,以及持久化、主从复制、集群
作者简介作者简介
陈雷陈雷,好未来学而思网校增长研发负责人,清华与北京邮电大学硕士,曾在百度、腾讯和滴滴等公司工作,12年后端架构经验。合著有《PHP7底层设计与源码实现》。方波方波,资深工程师,先后就职于
360、百度、滴滴,设计并开发360消息系统Qbus、Nginx接入层、电商网站架构等分布式高并发系统。黄桃黄桃,好未来学而思网校架构师,从事互联网服务端研发与架构工作多年,熟悉PHP、Nginx、
Redis等源码实现,乐于学习与分享。合著有《PHP7底层设计与源码实现》。李乐李乐,好未来PHP工程师,西安电子科技大学硕士,乐于钻研技术与源码研究,对Redis和Nginx有较深理解。施洪宝施洪宝, 好未
来后端研发工程师,东南大学硕士,对Redis、Nginx等开源软件有较深的理解,熟悉C/C++开发,对高并发、分布式有浓厚兴趣,曾发表EI论文2篇,。熊浩含熊浩含,百度研发工程师、PHP开发者,对Redis
等开源软件有较深的研究。乐于钻研技术难点,喜欢折腾,在学习思路上有很好的方法论。闫昌闫昌,好未来后端软件开发工程师,深耕信息安全领域多年,对Linux下服务端开发有较深见解,擅长高并发业
务的实现。张仕华张仕华,滴滴资深软件开发工程师,热衷于研究高并发场景下的架构设计及实现,熟悉Redis、Nginx和LevelDB等源码,热衷于探究技术本质。周生政周生政,滴滴后端高级工程师,多年LNMP技术
栈开发经验,曾任北京环球购物电商后端技术负责人。热衷于Linux平台效率工具, 熟悉Bash、Docker等自动化工具。
如何得到这本书?如何得到这本书?
【作者面对面问答】【作者面对面问答】你可以在文末留言写出Redis相关的一些问题,将有机会得到《Redis 5设计与源码分析》作者的留言回复,作者会选取5条比较精致的问答赠与图书,以下这些问题供参考:
Redis性能提升的可能方面?说说你的想法?
Redis高性能与数据结构的关系,以及如何在实践中应用?
高性能缓存架构中,多线程模型与单进程单线程模型的优缺点?如emcache与Redis架构对比
其他你困扰的问题
大家也可以去京东上自行购买:https://item.jd.com/12566383.html (复制链接至浏览器,即可查看)
活动截止:2019年9月24日12:00,我们会留言回复获奖者,敬请期待。
以下为《Redis 5设计与源码分析》节选:Redis为什么这么快之事件模型详解为什么这么快之事件模型详解
Redis作为一个开源的基于内存的键值对存储系统,以出色的性能著称。官方提供的基准测试数据如下图所示, 摘自《How fast is Redis?》(https://redis.io/topics/benchmarks,复制链接至浏览器,即
可查看):
图中横轴为连接数,纵轴为QPS;可以看到Redis单实例甚至可以达到10万+QPS。那么,Redis作为”单进程单线程”服务端程序,性能为何如此之高?
Redis为什么这么快?为什么这么快?
Redis的高性能主要有以下几个原因:
1)基于内存
Redis是基于内存的存储系统,绝大部分的命令处理只是纯粹的内存操作,内存的读写速度是非常快的。
2)单进程单线程
单进程单线程处理请求,避免了不必要的上下文切换,同时不存在加锁释放锁等同步操作,而且实现简单;简单加高性能,何乐而不为呢?
不过,单进程单线程的方式无法发挥多核CPU性能,只能采取部署多个Redis实例来利用多核CPU,但这样会带来一定的运维复杂度。另外,单进程单线程处理某个命令请求而阻塞时,整个Redis服务无
法处理其他请求。
注:实际上一个正在运行的Redis Server肯定不止一个进程/线程,详情见附录Redis进程模型小节
3)数据结构
Redis中的数据结构是专门设计的,大部分命令处理的时间复杂度都是O(1),少数命令才是O(logN)或者O(N);比如zset数据类型,为了兼顾范围查找与键查找效率,底层采用跳跃表与字典两种数据结构
实现。
4)事件模型
Redis作为服务端程序,必然伴随着大量的客户端链接以及网络IO,网络IO通常是影响服务端程序性能的主要因素。
Redis高效的网络IO源于两点:非阻塞,且采用了成熟的IO多路复用模型select/epoll/kqueue/evport。IO多路复用通常有几个关键点:
多条连接注册到同一个模型对象,进程只需要在一个模型对象阻塞等待事件发生,而无需再轮询所有连接;
当某条连接有新的数据处理时,操作系统会唤醒阻塞进程,进程随之可处理事件请求;
Linux系统我们通常会使用epoll,其底层基于红黑树+双向链表;红黑树实现进程高效注册连接fd,双向链表实现进程高效获取连接事件;
Redis除了需要处理网络IO事件(文件事件)之外,还需要处理定时任务事件(时间事件);而定时任务事件的要求只有一点:不能影响命令处理主流程,即不能占用太多CPU时间;
资源评论
weixin_38724370
- 粉丝: 5
- 资源: 932
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功