Redis 单线程主要是指 Redis 的网络 I/O 和事件处理采用了单线程模型,而不是 Redis 本身的命令处理采用单线程模型。
1.redis启动线程,C语言源码:
主要有redis-server、持久化(rdb,aof)线程,io线程,jemalloc_bg_thd(后台内存进程管理)
io线程也是后面Redis进行io多路复用的重点
redis的单线程指的是redis-server的命令处理是单线程。
2.redis 命令处理单线程的目的
单线程的局限性:
不能有耗时操作(磁盘io等),主要影响响应性能(多命令请求,导致部分请求阻塞)
3.redis是不是io密集型还是cpu密集型
io密集型:
磁盘io,有些场景属于,比如持久化,通过fork子线程进行rdb,或者异步线程进行aof刷盘
网络io,有些场景属于,多个客户端连接,数据请求或者返回数据量较大(redis 单线程需要解决)
CPU密集型:据请求或者返回数据量较大,rehash数据迁移(数据字典表扩容的时候)。(redis 单线程需要解决)
所以redis,也得考虑解决密集型。
4.redis为什么不采用多线程
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。