Redis为什么是单线程还支持高并发
2019-08-03 10:21
417 查看
版权声明:本文为博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_28673091/article/details/98308832
Redis为什么设计成单线程模式
因为redis是基于内存的读写操作,所以CPU不是性能瓶颈,而单线程更好实现,所以就设计成单线程模式
单线程模式省却了CPU上下文切换带来的开销问题,也不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗。
单线程为什么快
- 完全基于内存的操作。
- redis特有的数据结构,对存储数据做了优化,使访问更加简单高效
- 多路IO复用
多路IO复用:这里“多路”指的是多个网络连接,“复用”指的是复用同一个线程。采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络IO的时间消耗);
redis虽然是单线程的,但是可以处理并发连接。非阻塞IO 内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epoll的多路复用特性,使并发称为可能。
单线程为什么快还支持高并发
基于以上所有redis有以下几个优势:
- 完全基于内存操作,加上其特有的数据结构(优化的数据结构)使得其访问速度非常快。
- 单线程模式单省却了CPU上下文切换带来的开销问题,也不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗。
- 多路IO复用,使其可以可以高效的处理多个连接请求,既支持了高并发,同时也减少了网络IO的消耗时间。
- Redis采用自己实现的事件分离器,效率比较高,内部采用非阻塞的执行方式,吞吐能力比较大
单线程的劣势及解决方案
无法发挥多核CPU性能,不过可以通过在单机开多个Redis实例来完善;
相关文章推荐
- 为什么单线程可以支持多线程的并发访问
- 为什么单线程的Redis却能支撑高并发?
- 单进程单线程的Redis如何能够高并发,redis是个单线程的程序,为什么会这么快呢?
- 为什么Redis是单线程?为什么能处理大并发量?
- Redis为什么是单线程、及高并发快的大原因详解
- Redis为什么使用单进程单线程方式也这么快
- Redis为什么使用单进程单线程方式也这么快
- 解惑:为什么300的并发能把支持最大连接数4000数据库压死?
- Redis是单线程的,但Redis为什么这么快?
- 为什么Redis不支持回滚?
- 单进程单线程的Redis如何能够高并发
- 为什么说Redis是单线程的以及Redis为什么这么快!
- Redis事务为什么不支持回滚
- Redis是单线程的,但Redis为什么这么快?
- 为什么使用Redis 使用Redis有什么缺点 单线程的Redis为什么这么快 Redis的数据类型,以及每种数据类型的使用场景 Redis的过期策略以
- 为什么说Redis是单线程的以及Redis为什么这么快!
- 单线程的redis为什么达到每秒万级的处理速度?
- 为什么redis支持lua脚本功能
- Redis 为什么使用单进程单线程方式也这么快
- 为什么说Redis是单线程的以及Redis为什么这么快!