起因:随着项目的进一步推广,数据量的增大,直接访问mysql数据库获取数据所使用的时间越来越长,为解决当前主要矛盾,决定引入redis非关系型数据库作为缓存层,使得数据并不能直接命中数据库,减少访问数据库带来的压力,从而加快运行速度。
Redis的线程模型
Redis是一个单进程的应用

每一条到达服务端的命令都不会立即执行,所有命令都会进入一个队列中,所以Redis不会产生并发问题
为什么Redis是单线程模型效率还这么高?
- 纯内存访问:数据放在内存中,内存的响应时间100纳秒
- 非阻塞I/O:Redis采用epoll作为I/O多路复用技术的实现,再加上Redis自身的事件处理模型将epoll中的连接、读写、关闭都转换为了事件,不在I/O上浪费过多时间
- 采用单线程,避免了不必要的上下文切换和竞争条件
由于模型的本身机制,因此尽量不要和redis交互大数量的内容
什么是多路复用?
假如你是一个老师,让30个学生回答问题,如何在学生昨晚后检查是否正确?
- 第一种:A,B,C,D按顺序轮询
- 第二种:老师身上有查克拉会分身,分了30分身去处理
- 第三种:你在讲台上问谁回来完毕,谁举手去回答谁,这就是I/O复用模型了
不要以为每天把功能完成了就行了,这种思想是要不得的,互勉~!
网友评论