Redis
weixin_39740597
这个作者很懒,什么都没留下…
展开
-
通俗分析单线程的Redis为什么这么快
1、纯内存操作Redis 绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,查找和操作的时间复杂度都是O(1)。想了解下什么是时间复杂度O(1) ? 请点击这里。拿笔记本电脑来说,假设主频是3.1G,也就是说每秒可以执行3.1*10^9个指令。所以说CPU看世界是非常非常慢的,内存比它慢百倍,磁盘比他慢百万倍。2、单线程+多路IO复用机制想了解下什么是多路复用以及多路复用常见的实现方式?请点击这里单线程想要实现高性能,必须和多路IO复用机制..原创 2020-11-03 15:50:16 · 77 阅读 · 0 评论 -
epoll、select、poll 对比
在Redis单线程模型中,有一个非常重要的点就是IO多路复用模块。这个模块的存在,是单线程的Redis如此之快的非常重要的因素。首先几个点需要注意下:IO多路复用这一概念,并不是Redis专属,Redis仅仅是作为系统的一个应用程序用到了系统的这一功能而已。 IO多路复用本质上一一种思想,一种为了解决单线程高并发的问题的一种解决思路,并不是一种具体的实现。在不同的系统下有不同的实现,比如说在Linux下,现在最重要的实现是epoll;在Mac系统下,现在最重要的实现是XXX;select则应该是P原创 2020-11-03 14:37:51 · 97 阅读 · 0 评论 -
时间复杂度 举例理解
在Redis中,我们常说在内存中的操作用的是hash表,时间复杂度是O(1),那么这个O(1)是怎么意思?感性理解:O(1) 就是无论算法中的变量怎么变化,算法所耗费的时间总是固定的。比如说hash表,查找元素。O(n) 就是该算法所耗费的时间是随着变量正比相关的,当变量越大的时候,所耗费的时间就越大。比如说一层for循环。O(n2) 就是该算法所耗费的时间是随着变量n2相关的,当变量越大的时候,所耗费的时间就越大。比如说两层for循环。参考文章:时间复杂度:O(1)、O..原创 2020-11-03 13:25:34 · 294 阅读 · 0 评论 -
多线程相对于单线程的劣势
在说Redis单线程更快的时候,一般都会提到单线程虽然一个人干活,但是省去了多个人协作干活时候的沟通成本,这个“沟通成本”,在Linux中称之为多线程或者多进程的“上下文切换”。那么多进程上下文切换的时候具体有什么成本?这个也是我们需要了解的。具体详细的成本计算方式,可以参考下面的文章,但是现在还是不要陷进去的好。先对上下文切换有一个感性的认识,知道多线程或者多进程相比于单进程不都是优势。主要几点:①时间成本(每次切换进程或者线程所耗费的时间);通过下面的文章,得到的结论是,进程之.原创 2020-11-03 12:44:00 · 236 阅读 · 0 评论