面试题:
- redis 和 memcached 有什么区别?
- redis的线程模型是什么?
- 为什么单线程的 redis 比多线程的 memcached 效率要高得多?(为什么 redis 是单线程的但是还可以支持高并发)?
redis 最基本的内部原理和特点:redis 实际上是个单线程工作模型
redis 和 memcached 有什么区别
- redis 相比 memcached 来说,拥有更多的数据结构并支持更丰富的数据操作。
- memcached 没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据;但是 redis 目前是原生支持 cluster 模式的,redis 官方就是支持 redis cluster 集群模式的,比 memcached 要更好。
Redis的线程模型
文件事件处理器
redis 基于 reactor 模式开发了网络事件处理器你,这个处理器叫做文件事件处理器,file event headler。其是单线程的,因此 redis 才叫做单线程的模型。采用 IO多路复用机制同时监听多个 socket,根据 socket 上的事件来选择对应的时间处理器来处理这个事件。
如果被监听的 socket 准备好执行 accept、read、write、close 等操作的时候,跟操作对应的文件事件就会产生,这时候文件事件处理器就会调用之前关联好的事件处理器来处理这个事件。
文件事件处理器是单线程模式运行的,但是通过IO多