网站推广方法及特点,网站上线所需的东西哪里好,网页升级紧急通知怎么取消,怎样购买起名软件自己做网站1、Redis5及之前是单线程版本 2、Redis6开始引入多线程版本#xff08;实际上是 单线程多线程 版本#xff09;
Redis6及之前版本#xff08;单线程#xff09; Redis5及之前的版本使用的是 单线程#xff0c;也就是说只有一个 worker队列#xff0c;所有的读写操作都要…1、Redis5及之前是单线程版本 2、Redis6开始引入多线程版本实际上是 单线程多线程 版本
Redis6及之前版本单线程 Redis5及之前的版本使用的是 单线程也就是说只有一个 worker队列所有的读写操作都要在这一个队列进行操作好处是不会有线程安全问题因为它在读写时就只有一个线程那对于读写操作肯定没有线程安全问题啊但是读写 write、read 这些系统调用在Redis执行期间占用了大部分的 CPU 时间所以这就是单线程模式的缺点。 所以也就在Redis6引入了多线程版本接着往下看。
Redis6单线程多线程 Redis6引入了多线程机制但是不是说有多个worker线程同时并发读写 而是它有 “一个 worker线程多个IO子线程”其实就是在 IO 就绪之后使用多线程提升读写解析数据的效率而在 操作内存数据的时候还是用单线程。 利用这种单线程多线程共同运作的机制将CPU的性能显著提升了。
同时这种机制同样不会产生线程安全问题因为Redis在针对数据的内存操作时是在一个公共的worker队列中实现的先进先出所以不会有线程安全问题。
Redis6之所以保留worker单主线程是因为单线程机制使得Redis内部实现的复杂度大大降低而且可以保证操作的线程安全。如果整个过程全让子线程做了整个任务处理过程太重就失去了原来单线程高效处理的优势了