- 1、本文档共10页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
目录
HYPERLINK \l _Toc30046_WPSOffice_Level1 Redis为什么使用单进程单线程方式也这么快 1
HYPERLINK \l _Toc16629_WPSOffice_Level1 单进程单线程好处 1
HYPERLINK \l _Toc32550_WPSOffice_Level1 Redis对象类型简介 2
HYPERLINK \l _Toc29476_WPSOffice_Level1 简单动态字符串 3
HYPERLINK \l _Toc5931_WPSOffice_Level1 字典 4
HYPERLINK \l _Toc18433_WPSOffice_Level1 跳跃表 4
HYPERLINK \l _Toc18421_WPSOffice_Level1 整数集合 5
HYPERLINK \l _Toc5413_WPSOffice_Level1 压缩列表 5
HYPERLINK \l _Toc31005_WPSOffice_Level1 RDB 持久化 5
HYPERLINK \l _Toc4746_WPSOffice_Level1 主从复制 6
HYPERLINK \l _Toc15990_WPSOffice_Level1 复制原理 7
HYPERLINK \l _Toc14727_WPSOffice_Level1 五、哨兵模式(sentinel) 7
HYPERLINK \l _Toc32002_WPSOffice_Level1 redis的过期策略以及内存淘汰机制 7
HYPERLINK \l _Toc27498_WPSOffice_Level1 如何应对缓存穿透和缓存雪崩问题 8
HYPERLINK \l _Toc11229_WPSOffice_Level1 如何解决redis的并发竞争key问题 8
HYPERLINK \l _Toc22573_WPSOffice_Level1 集群 9
HYPERLINK \l _Toc6189_WPSOffice_Level1 redis和memcached的区别(总结) 9
HYPERLINK \l _Toc8079_WPSOffice_Level1 1. 数据类型 9
HYPERLINK \l _Toc12473_WPSOffice_Level1 2.过期 9
HYPERLINK \l _Toc20223_WPSOffice_Level1 3.持久化,数据恢复,快照,aof 9
HYPERLINK \l _Toc26572_WPSOffice_Level1 4.集群,主从复制 9
HYPERLINK /syyong/p/6231326.html Redis为什么使用单进程单线程方式也这么快
Redis采用的是基于内存的采用的是单进程单线程模型的KV数据库,由C语言编写。官方提供的数据是可以达到100000+的qps。这个数据不比采用单进程多线程的同样基于内存的KV数据库Memcached差。
Redis快的主要原因是:
完全基于内存
数据结构简单,对数据操作也简单
使用多路 I/O 复用模型
第一、二点不细讲,主要围绕第三点采用多路 I/O 复用技术来展开。
多路 I/O 复用模型是利用select、poll、epoll可以同时监察多个流的 I/O 事件的能力,在空闲的时候,会把当前线程阻塞掉,当有一个或多个流有I/O事件时,就从阻塞态中唤醒,于是程序就会轮询一遍所有的流(epoll是只轮询那些真正发出了事件的流),并且只依次顺序的处理就绪的流,这种做法就避免了大量的无用操作。这里“多路”指的是多个网络连接,“复用”指的是复用同一个线程。采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络IO的时间消耗),且Redis在内存中操作数据的速度非常快(内存内的操作不会成为这里的性能瓶颈),主要以上两点造就了Redis具有很高的吞吐量。
单进程单线程好处
代码更清晰,处理逻辑更简单
不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗
不存在多进程或者多线程导致的切换而消耗CPU
单进程单线程弊端
无法发挥多核CPU性能,不过可以通过在单机开多个Redis实例来完善;
其他一些优秀的开源软件采用的模型
多进程单线程模型:Nginx
单进程多线程模型:Memcached
Redis对象类型简介
字符串:int,raw或者embstr。Long 简单动态字符串
列表:ziplist(压缩列表) 和 linkedlist(双端链表)
哈希:ziplist 或者 hashtable。
集合对象:intset 或者 hashtable。整数集合,字典。
文档评论(0)