缓存中间件 --- Memcache 和 Redis 的区别
Memcache : 代码层次类似于Hash
一、支持简单数据类型
二、不支持数据持久化存储
三、不支持主从
四、不支持分片
Redis
一、数据类型丰富
二、支持数据磁盘持久化存储
三、支持主从
四、支持分片
为什么Redis 能这么快
100000 + QPS (QPS query per second 即每秒查询次数)
一、完全基于内存的,绝大数请求是内存操作,执行效率高
Redis 采用的是单线程 单进程模型的KV 数据库,由C语言编写,将数据储存在内存里面,读写操作都不会受到硬盘IO的限制,所以速度极快
二、数据结构简单,对数据操作也简单。Redis 不使用表,它的数据库不会预定义强制用户去Redis关联。因此性能相比关系型数据库高出不止一个量级,存储结构就是键值对。类似于HashMap
三、采用单线程,单线程也能处理高并发请求,想多核可启动多实例。
四、采用多路I/O复用模型,非阻塞IO
什么是多路I/O复用模型?
FD: File Descriptor 文件描述符
一个打开的文件通过唯一的描述符进行引用,该描述符是打开文件的元数据到文件本身的映射。
Redis 采用的I/O多路复用函数:epoll / kqueuq / evport / select
一、因地适宜
二、优先选择时间复杂度为O(1)的 I/O 多路 复用函数作为底层实现
三、以时间复杂度为 O(n)的 select 作为保底
四、基于react 设计模式监听 I/O 事件