美文网首页
Redis为什么是单线程

Redis为什么是单线程

作者: 菊地尤里 | 来源:发表于2020-10-24 11:46 被阅读0次

1.Redis为什么是单线程?

Redis基于Reactor模式开发了网络事件处理器,这个处理器被成为文件事件处理器。它的组成结构为4部分:多个套接字,io多路复用程序,文件事件分派器,事件处理器。因为文件事件分派器队列的消费是单线程的,所以redis是单线程~~~~

Redis通过AE事件模型以及io多路复用的技术,处理性能非常高,因此没必要使用多线程。单线程使得Redis内部实现的复杂度大大降低,Hash的惰性Rehash,Lpush等等线程不安全的命令都可以无锁进行。

2.那什么是io多路复用?

一种经典的Reactor设计模式,也是异步阻塞io
多路指多个Socket连接,复用指复用一个线程,多路复用三种技术:select,poll,epoll。
epoll是最新最好的多路复用技术,采用多路I/O复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络IO的消耗时间),且Redis在内存中操作数据的速度非常快,使得Redis具有高吞吐率

3.那什么是AE事件模型?

4.为什么Redis6.0之前没有引入多线程呢

因为引入后会带来并发读写的问题,增加系统复杂度,同时可能存在线程切换,甚至加锁解锁,死锁的性能消耗。

5.那为什么要引入多线程

Redis的瓶颈是内存和网络,不是cpu,如果使用cpu多核,可以搭建多个Redis实例来解决。
Redis4.0开始有多线程概念,比如Redis通过多线程方式在后台删除对象,以及通过Redis模块实现的阻塞命令。但网络性能优化才是大头。网络IO读写在Redis整个执行期间占用大量CPU,

使用Redis多线程的好处
1.可以充分利用服务器CPU资源,目前主线程只能利用一个核。
2.多线程可以分摊Redis同步IO读写负荷。
Redis6.0未默认开启多线程,需在conf配置。4 核的机器建议设置为 2 或 3 个线程,8 核的建议设置为 6 个线程,线程数一定要小于机器核数,尽量不超过8个。

相关文章

  • redis高性能-线程模型

    Redis 为什么用单线程 Redis单线程指的什么 Redis 是单线程,主要是指 Redis 的网络 IO 和...

  • java面试宝典 redis和分布式锁

    redis 是基于key-value的内存高速缓存数据库 redis 是单线程模型 redis 是单线程模型为什么...

  • 3:高性能IO模型:为什么单线程Redis能那么快?

    1:Redis单线程的概念? 2:Redis使用单线程和多线程对比? 3:Redis使用单线程为什么这么快? 4:...

  • 3. 高性能IO模型,探究Redis单线程为何很快

    1. Redis单线程 通常说Redis单线程是指Redis的网络IO和键值对读写是由一个线程完成的 2. 为什么...

  • Redis单线程原理

    redis单线程模型很多人都知道的一个点,但是redis为什么采用单线程,很多人都不是很清楚,同时redis单线程...

  • Java-分布式框架-redis-1

    Redis核心原理 Redis的单线程和高性能 Redis 单线程为什么还能这么快? 因为它所有的数据都在内存中,...

  • redis-io-nio

    redis-io模型 单线程的程序有哪些? nginx node.js redis 单线程为什么快 全是内存运...

  • Redis问答

    Q1:redis是单线程的,为什么会有并发问题? A:redis是单线程的,单个命令执行时是不会有并发问题的。但是...

  • 简介redis之单线程

    前言 我们总能看到也总能遇到这些问题 Redis是单线程的吗?为什么单线程的Redis会这么快? 首先我们要厘清一...

  • Redis 面试题汇总

    Redis 为什么这么快?延伸问题:Redis 是单线程的吗? Redis 本身是基于内存操作的,不需要进行磁盘的...

网友评论

      本文标题:Redis为什么是单线程

      本文链接:https://www.haomeiwen.com/subject/slyimktx.html