redis是怎么实现高性能的
性能一般是基于两方面,1是计算,2是读写操作
- 计算操作
- 基于内存的,所以计算很快
- 单线程,所以执行命令很快
- 为什么?因为你单线程执行的话就不需要去加锁,加锁是很重很耗性能的
- 读写操作,无非就是磁盘IO,网络IO
- 磁盘IO优化:rdb持久化,会创建一个子进程(系统级别)来生成rdb文件,这样可以避免主线程的阻塞。这也是一种写入时复制的思想
- 网络IO优化:
- io多路复用:select epoll 可以监听多个socket连接
- 事件派发机制:有很多不同性质的socket,redis有不同的Handler来处理这些socket事件,redis6.0使用多线程来处理这些Handler(多线程是用来处理网络请求的,命令还是由主线程来执行的)