Redis学习之聊聊单线程的reactor模型

发布时间:2024-04-10 点击:126
本篇文章带大家聊聊redis中单线程的reactor模型,i/o模型,还有多线程版本i/o模型,希望对大家有所帮助!
redis 的高性能纯内存访问,所有数据都在内存中,所有的运算都是内存级别的运算,内存响应时间的时间为纳秒级别。因此 redis 进程的 cpu 基本不存在磁盘 i/o 等待时间、内存读写性能问题,cpu 不是 redis 的瓶颈(内存大小和网络i/o 才是 redis 的瓶颈,也就是客户端和服务端之间的网络传输延迟)。
【相关推荐:redis视频教程】采用单线程模型,单线程实现简单。避免了多线程频繁上下文切换,以及同步机制如锁带来的开销简单高效的基础数据结构:动态字符串(sds),链表,字典,跳跃链表,整数集合和压缩列表。然后 redis 在这个基础上去实现用户能操作的对象:字符串,列表,哈希,集合,有序集合等对象reactor 模式的网络事件处理器。它使用了 i/o 多路复用去同时监控多个套接字,这是一种高效的i/o模型。
reactor 相关知识可以看下这篇文章 框架篇:见识一下linux高性能网络io reactor模型为什么使用单线程采用单线程,避免了不必要的上下文切换和竞争条件;不存在多线程导致的切换而消耗cpu不用考虑各种锁的问题,不存在加锁和释放锁的的操作,没有因为可能出现的死锁而导致的性能消耗简单可维护,多线程模式会使得程序的编写更加复杂和麻烦,单线程实现易实现redis 是单线程系统?
我们常说 redis 单线程是指其网络事件处理模型 reactor 是单线程如果一次 client 请求会删除几百万 keys 值,那么这条命令可能会导致阻塞。在 redis 4.0 选择引入多线程来实现这一类非阻塞的命令在 redis6.0 版本正式引入多线程去处理客户端的 i/o 读写响应,而 redis 命令事件的处理还是在主线程单线处理假如是针对整个 redis 系统,则一直有其他线程去处理异步任务,如 aof、rdb 的同步redis i/o模型redis 处理快,不单单因为它是个单线程纯内存系统,还有它采用了 reactor 模型,使用 i/o 多路复用来实现对外部请求的处理,减少网络连接、读写等待时间。
使其在网络 i/o 操作中能并发处理大量的客户端请求,实现高吞吐率,高并发redis 的多线程版本i/o模型 6.0
更多编程相关知识,请访问:编程入门!!

19双11云服务器价格是多少
新用户云服务器有什么区别
阿里云web服务器部署
华云数据被APAC CIO Outlook杂志评为亚太区十大云计算服务提供商
“风向标”本周齐发力 终端买米热情不减
阿里云的服务器带宽
联通云服务器租赁价格查询系统
从卖域名到市值百亿公司老板,一起来看看他是怎么做的