一、redis为什么快?
1.单线程和基于epoll的io多路复用,避免线程间的切换的性能消耗。
2.基于内存,相较于mysql这种基于磁盘io的快很多
3.高效的8种数据结构(string,list,set,hash,zset,bitmap,geo,hyperlog)
二、epoll的理解
1.前置知识:同步异步以及阻塞和非阻塞;4种网络io:BIO(阻塞io) NIO(非阻塞io) IO multiplexing (IO多路复用) AIO (异步io)
1)同步:等待通知时收到结果后才继续下边任务
异步:不用等待通知结果继续执行下边任务,结果完成后通过一些方法返回给调用者如:轮询,回调
可以理解为:点餐时,取餐方式,是自己排队等着取餐(同步),还是你坐会座位不用等着排队服务员给你送(异步)
2)阻塞:调用者调用被调用的服务,调用者挂起当前任务,啥也不干
非阻塞:调用者调用被调用的服务,调用者不会挂起,可以干其他的事
可以理解为:点餐时啥也不干,等取到饭再干其他的(阻塞),点餐时可以可以干其他的事刷视频打游戏等(非阻塞)
同步阻塞:排队等着取餐啥也不干
同步非阻塞:排队等着取餐同时刷抖音打游戏
异步阻塞:回到座位等着服务员送餐干等着
异步非阻塞:回到座位等服务员送餐,同时还刷抖音
3)io多路复用:
Redis常见面试题
最新推荐文章于 2024-04-30 17:25:22 发布