思维导图:
引言
本文是对于Redis原理的初步介绍,涉及到 5个方面,分别是线程IO模型,通信协议,事务,管道和持久化。
一.线程IO模型
Rdies是个单线程程序,这是Reids速度快的一个原因,因为没有线程切换的开销,缺点则是当执行时间复杂度较高的操作或者指令时,可能会导致Reids的卡顿。与此同时,Redis还善于处理多并发客户端连接,而这得益于Redis的IO模型。
Redis使用了非阻塞IO模型。即当需要读取数据的时候能读多少读多少,而不是一直阻塞,直到读取所需要的全部数据,在写的时候,能写多少写多少,而非一直阻塞,直到写入所有需要写入的数据。使用非阻塞IO可以保证Redis不会因为读写数据二阻塞。因为使用了非阻塞IO,所以存在一个问题,如果读了一半甚至更少就返回或者当写缓存已满却没有写入所有数据时,因为使用了非阻塞IO,此时读写操作就返回了。这个问题的解决,就需要使用到事件轮询机制或者多路复用。