2019.9.16更新:增加了对缓存雪崩,缓存穿透,缓存击穿的描述。并附上本人对Redis单线程,多线程实现的理解。
评论区有一些争执,但是大家都很友善,比如这个单线程是否能让Redis更快尤其是大家争论的重点。
(以下单线程仅指Redis负责存取这块的线程只有一个,而非Redis中只有一个进程)
我先给个我的结论,单线程的Redis在瓶颈是cpu的io时(这不是大多数应用的实际应用场景),确实速度会比多线程慢。但是,我们实际应用场景中很少会遇到瓶颈是CPU的io的情况,这时候单线程优势就凸显出来了。
实现很简单!性能又不会比多线程差,并且,单线程确实不用处理上下文的切换,cpu利用率会比多线程高,这时候采用单线程实现是一种很划算的做法。当然,如果你的宽带和内存牛逼到了使得你的io成为瓶颈,这时候也只能使用多线程了。
面试时考官让我挑一种自己熟悉的NoSQL数据库讲一讲,我当场就蒙了,我就用过sql server,mysql和Oracle这几种,这几种就算从名字看也知道是sql数据库嘛,绞尽脑汁,我福至心灵,答出,Redis!
先说说Redis是什么吧小老弟?
Redis嘛,就是一种运行速度很快,并发很强的跑在内存上的NoSql数据库,支持键到五种数据类型的映射。
来来来,讲一讲为什么Redis这么快?
首先,采用了多路复用io阻塞机制然后,数据结构简单,操作节省时间最后,运行在内存中,自然速度快
Redis为什么是单线程的?
评论区有一些争执,但是大家都很友善,比如这个单线程是否能让Redis更快尤其是大家争论的重点。
(以下单线程仅指Redis负责存取这块的线程只有一个,而非Redis中只有一个进程)
我先给个我的结论,单线程的Redis在瓶颈是cpu的io时(这不是大多数应用的实际应用场景),确实速度会比多线程慢。但是,我们实际应用场景中很少会遇到瓶颈是CPU的io的情况,这时候单线程优势就凸显出来了。
实现很简单!性能又不会比多线程差,并且,单线程确实不用处理上下文的切换,cpu利用率会比多线程高,这时候采用单线程实现是一种很划算的做法。当然,如果你的宽带和内存牛逼到了使得你的io成为瓶颈,这时候也只能使用多线程了。
面试时考官让我挑一种自己熟悉的NoSQL数据库讲一讲,我当场就蒙了,我就用过sql server,mysql和Oracle这几种,这几种就算从名字看也知道是sql数据库嘛,绞尽脑汁,我福至心灵,答出,Redis!
先说说Redis是什么吧小老弟?
Redis嘛,就是一种运行速度很快,并发很强的跑在内存上的NoSql数据库,支持键到五种数据类型的映射。
来来来,讲一讲为什么Redis这么快?
首先,采用了多路复用io阻塞机制然后,数据结构简单,操作节省时间最后,运行在内存中,自然速度快
Redis为什么是单线程的?









