美文网首页
五 单线程的redis为什么性能高

五 单线程的redis为什么性能高

作者: 爱编程的凯哥 | 来源:发表于2019-02-28 06:44 被阅读22次

目标

解释redis单线程,性能高的原因

分析

  • 性能高原因
    1.单线程,减少线程上下文切换,没有多线程的各种锁问题
    2.内存操作,速度快,减少网络传输带了的损耗
    3.使用多路 I/O 复用模型,多路 I/O 复用模型是利用select、poll、epoll可以同时监察多个流的 I/O 事件的能力,在空闲的时候,会把当前线程阻塞掉,当有一个或多个流有I/O事件时,就从阻塞态中唤醒,于是程序就会轮询一遍所有的流(epoll是只轮询那些真正发出了事件的流),并且只依次顺序的处理就绪的流,这种做法就避免了大量的无用操作。这里“多路”指的是多个网络连接,“复用”指的是复用同一个线程。采用多路 I/O 复用技术可以让单个线程高效的处理多个连接请求(尽量减少网络IO的时间消耗),且Redis在内存中操作数据的速度非常快(内存内的操作不会成为这里的性能瓶颈).
  • 缺点:
    1.不能充分利用多核cpu资源,所以经常会单服务其可以部署多节点来充分利用系统资源.

附其他常见模式

多进程单线程模型:Nginx
单进程多线程模型:Memcached

扩展:

针对多路复用实现的异步非阻塞模型的知识补充:

  • 同步阻塞
         用户线程同步阻塞不干别的,同步等待系统内核返回数据

  • 同步非阻塞
         用户线程等待内核返回数据的同时干别的事情,同步一直轮询查系统内核是否准备好数据

  • 异步阻塞
         用户线程等待内核通知数据处理完好后才会去干别的事情,异步指系统内容数据处理好后会通知用户来处理

  • 异步非阻塞
         用户线程等待内核通知数据处理完好的同时干别的事情,异步指系统内容数据处理好后会通知用户来处理.
    看下时序图说明:


    io模型

参考博客:
https://blog.csdn.net/zk3326312/article/details/79400805
https://www.cnblogs.com/syyong/p/6231326.html

相关文章

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

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

  • 五 单线程的redis为什么性能高

    目标 解释redis单线程,性能高的原因 分析 性能高原因1.单线程,减少线程上下文切换,没有多线程的各种锁问题2...

  • Redis单线程为什么快?

    Redis使用了单线程和I/O多路复用模型来实现高性能的内存数据库服务器。 1 Redis单线程为什么那么快? (...

  • redis高性能-线程模型

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

  • 【JAVA】一

    为什么在业务里用 Redis, Redis 有什么优点?单线程:并发安全;高性能;原语与数据结构丰富;采用广泛,踩...

  • Redis

    什么是Redis redis是一个单线程、高性能的key-value存储系统 Redis的特点和优势 性能极高 –...

  • 一篇文章完全理解Redis为什么这么快

    单线程架构 Redis使用了单线程架构和I/O多路复用模型来实现高性能的内存数据库. 为什么单线程还能这么快? 纯...

  • 谈谈 IO多路复用

    前言 面试的时候经常会问为什么redis单线程,性能那么高?于是很多培训机构的老师说是因为IO多路复用,于是就硬背...

  • 2020最新大厂Redis面试专题

    redis 和 memcached 什么区别?为什么高并发下有时单线程的 redis 比多线程的 memcache...

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

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

网友评论

      本文标题:五 单线程的redis为什么性能高

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