为什么Redis能这么快?
官方:100000+QPS(QPS即query per second 每秒查询的次数)
完全基于内存,绝大请求是纯粹的内存操作,执行效率高
- 它是c语言编写 数据储存在内存中 读写时 不会受到硬盘io的限制 ,所以速度极快
数据节后简单,对数据操作简单
- redis不使用表 他的数据库不会预定义不会强制用户存储的数据进行关联,因此 性能相比其他关系数据库 高出很多
- 他的存储结构是键值对 类似于hashmap 查询比较快
采用单线程,单线程也可以处理高并发请求,想多核也可以启动多个实例
- 主线程是单线程 避免的频繁上下文切换和锁竞争使得redis 执行起来效率更高。
- 可以在多核启动多个redis实例
使用多路I/O复用模型 非阻塞io
- 多路I/O复用模型是利用 select、poll、epoll 可以同时监察多个流的 I/O 事件的能力,在空闲的时候,会把当前线程阻塞掉,当有一个或多个流有 I/O 事件时,就从阻塞态中唤醒,于是程序就会轮询一遍所有的流(epoll 是只轮询那些真正发出了事件的流),并且只依次顺序的处理就绪的流,这种做法就避免了大量的无用操作。