redis是怎么实现高性能的

性能一般是基于两方面,1是计算,2是读写操作

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