Redis的线程模型

Redis是一个单线程工作模型的数据库,其线程模型基于文件事件处理器,采用IO多路复用机制监听多个socket,通过文件事件分派器处理事件。Redis相比memcached提供了更多数据结构和操作,并支持原生cluster模式。Redis的单线程模型在高并发下仍能保持高性能,主要得益于非阻塞的IO多路复用和纯内存操作,避免了多线程的上下文切换开销。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

面试题:

  • redis 和 memcached 有什么区别?
  • redis的线程模型是什么?
  • 为什么单线程的 redis 比多线程的 memcached 效率要高得多?(为什么 redis 是单线程的但是还可以支持高并发)?

redis 最基本的内部原理和特点:redis 实际上是个单线程工作模型

redis 和 memcached 有什么区别

  1. redis 相比 memcached 来说,拥有更多的数据结构并支持更丰富的数据操作。
  2. memcached 没有原生的集群模式,需要依靠客户端来实现往集群中分片写入数据;但是 redis 目前是原生支持 cluster 模式的,redis 官方就是支持 redis cluster 集群模式的,比 memcached 要更好。

Redis的线程模型

文件事件处理器

redis 基于 reactor 模式开发了网络事件处理器你,这个处理器叫做文件事件处理器,file event headler。其是单线程的,因此 redis 才叫做单线程的模型。采用 IO多路复用机制同时监听多个 socket,根据 socket 上的事件来选择对应的时间处理器来处理这个事件。

如果被监听的 socket 准备好执行 accept、read、write、close 等操作的时候,跟操作对应的文件事件就会产生,这时候文件事件处理器就会调用之前关联好的事件处理器来处理这个事件。

文件事件处理器是单线程模式运行的,但是通过IO多路复用机制监听多个 sokcet,可以实现高性能的网络通信模型,又可以跟内部其他单线程的模块进行对接,保证了 redis 内部的线程模型的简单性。

文件事件处理器的结构包含 4 个部分:

  • 多个socket
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值