redis为什么是单线程设计,以及Redis为什么快

3人阅读 评论(0) 收藏 举报
分类:

1 redis快的原因

https://zhuanlan.zhihu.com/p/34438275

1、完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);

2、数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的;

3、采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗;

4、使用多路I/O复用模型,非阻塞IO;

5、使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求;

2 redis 为什么是单线程的

因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了(毕竟采用多线程会有很多麻烦!,避免使用锁)。
正是由于在单线程模式的情况下已经很快了,就没有必要在使用多线程了!但是,我们使用单线程的方式是无法发挥多核CPU 性能,不过我们可以通过在单机开多个Redis 实例来完善!
警告:这里我们一直在强调的单线程,只是在处理我们的网络请求的时候只有一个线程来处理,一个正式的Redis Server运行的时候肯定是不止一个线程的,这里需要大家明确的注意一下!

查看评论

为什么说Redis是单线程的以及Redis为什么这么快!

一、前言 近乎所有与Java相关的面试都会问到缓存的问题,基础一点的会问到什么是“二八定律”、什么是“热数据和冷数据”,复杂一点的会问到缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题,这些看...
  • u010870518
  • u010870518
  • 2018-03-07 17:39:56
  • 16018

Redis为什么使用单进程单线程方式也这么快

Redis采用的是基于内存的采用的是单进程单线程模型的KV数据库,由C语言编写。官方提供的数据是可以达到100000+的qps。这个数据不比采用单进程多线程的同样基于内存的KV数据库Memcached...
  • mine_song
  • mine_song
  • 2017-03-03 16:08:36
  • 1598

redis为什么是单线程的

单纯的网络IO来说,量大到一定程度之后,多线程的确有优势, 但并不是单纯的多线程,而是每个线程自己有自己的epoll这样的模型,也就是多线程和multiplexing混合。但是。还要考虑Redis操作...
  • it_manman
  • it_manman
  • 2018-02-28 16:45:31
  • 158

单进程单线程的Redis如何能够高并发,redis是个单线程的程序,为什么会这么快呢?

弄清楚 Redis 为什么是单线程单进程,为什么单线程能保证这么快的速度
  • ZuoAnYinXiang
  • ZuoAnYinXiang
  • 2017-10-30 17:08:57
  • 692

Redis为什么这么快?

今天我在一个技术群里提出一个问题:Redis为什么这么快,Redis的那些特性能够支持了它的高并发? 之前的我,也只是知道Redis是内存数据库,所以读取速度快;IO使用的是多路复用,使用一个线程来...
  • a6833916180
  • a6833916180
  • 2016-04-27 13:04:54
  • 7913

咱们一起来谈谈,redis为什么快?

在程序媛的生涯中,设置缓存会想起它,控制并发会想到它,做一些压缩存储依旧会想到它,一直停留在知道的起点上,但是没有深入的去挖掘和总结它这么受欢迎的原因。近期天时地利人和,整理了一下它的点点滴滴。 ☁ ...
  • YSC1123
  • YSC1123
  • 2017-03-21 14:19:57
  • 3523

Redis为什么是单线程

转自:https://www.zhihu.com/question/23162208 https://www.zhihu.com/question/55818031 Redis为什么是单线程的? 因为...
  • qqqqq1993qqqqq
  • qqqqq1993qqqqq
  • 2017-08-24 19:03:55
  • 4372

Redis是单线程的以及Redis为什么这么快!

一、前言近乎所有与Java相关的面试都会问到缓存的问题,基础一点的会问到什么是“二八定律”、什么是“热数据和冷数据”,复杂一点的会问到缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题,这些看似不...
  • wj_6114
  • wj_6114
  • 2018-03-09 10:04:12
  • 35

Redis单线程架构

Redis单线程架构 1 单线程模型 Redis客户端对服务端的每次调用都经历了发送命令,执行命令,返回结果三个过程。其中执行命令阶段,由于Redis是单线程来处理命令的,所有每一条到达服务端...
  • sunhuiliang85
  • sunhuiliang85
  • 2017-06-23 23:19:44
  • 3959

为什么说Redis是单线程的?

一、前言近乎所有与Java相关的面试都会问到缓存的问题,基础一点的会问到什么是“二八定律”、什么是“热数据和冷数据” ,复杂一点的会问到缓存雪崩、缓存穿透、缓存预热、缓存更新、缓存降级等问题,这些看似...
  • bntX2jSQfEHy7
  • bntX2jSQfEHy7
  • 2018-03-08 00:00:00
  • 400
    个人资料
    持之以恒
    等级:
    访问量: 6031
    积分: 504
    排名: 9万+
    文章存档