Memcache和Redis的区别
Memcache: 代码层次类似Hash
- 支持简单数据类型
- 不支持数据持久化存储
- 不支持主从
- 不支持分片
Redis
- 数据类型丰富
- 支持数据磁盘持久化存储
- 支持主从
- 支持分片
为什么Redis能这么快
100000+QPS(QPS即query per second,每秒内查询次数)
- 完全基于内存,绝大部分请求是存粹的内存操作,执行效率高
- 数据结构简单,对数据操也简单
- 采用单线程,单线程也能处理高并发请求,想多核也可以启动多实例
- 使用多路I/O复用模型,非阻塞IO
多路I/O复用模型
- 一个打开的文件通过唯一的描述符进行引用,该描述符是打开文件的元数据到文件本身的映射
Select系统调用
Redis采用的I/O多路复用函数:epoll/kqueue/evport/select ?
- 因地制宜
- 优先选择时间复杂度为O(1)的I/O多路复用函数作为底层实现
- 以时间复杂度为O(n)的select作为保底
- 基于react设计模式监听I/O事件