当前位置: 首页 > 知识库问答 >
问题:

Redis是单线程的,那它是怎么做并发I/O的呢?

湛玄裳
2023-03-14

我肯定误解了整个线程的事情,因为我觉得这个说法令人费解。如果一个程序是单线程的,它如何并发地执行任何操作?如果服务器是单线程的,那么为什么Redis操作是原子的呢?

谁能解释一下这个问题吗?

共有1个答案

松洛华
2023-03-14

这取决于如何定义并发。

在服务器端软件中,并发和并行常常被认为是不同的概念。在服务器中,支持并发I/O意味着服务器能够通过仅用一个计算单元执行与多个客户机相对应的多个流来为多个客户机服务。在这个上下文中,并行性意味着服务器能够同时执行几件事情(使用多个计算单元),这是不同的。

例如,一个酒保可以照顾几个顾客,而他一次只能准备一种饮料。所以他可以提供不并行的并发性。

 类似资料:
  • 问题内容: 为了掌握Redis的一些基础知识,我遇到了一篇有趣的博客文章。 作者指出: Redis是具有epoll / kqueue的单线程,并且在I / O并发方面可以无限​​扩展。 我肯定会误解整个线程问题,因为我发现此语句令人困惑。如果程序是单线程的,它如何并发执行任何操作?如果服务器仍然是单线程的,为什么Redis操作是原子的那么好呢? 有人可以阐明这个问题吗? 问题答案: 好吧,这取决于

  • 我目前正在尝试了解Redis的一些基本实现内容。我知道redis是单线程的,我已经偶然发现了以下问题:redis是单线程的,那么它是如何做并发I/O的呢? 但我还是觉得我没理解对。Afaik Redis使用一个单线程使用reactor模式。因此,如果我正确理解了这一点,那么有一个观察者(它处理FDS/传入/传出连接)将要完成的工作委托给它的注册事件处理程序。他们做实际工作并设置。他们的响应作为事件

  • 本文向大家介绍redis 的线程模型是怎么样的?相关面试题,主要包含被问及redis 的线程模型是怎么样的?时的应答技巧和注意事项,需要的朋友参考一下 redis 内部使用文件事件处理器 ,这个文件事件处理器是单线程的,所以 redis 才叫做单线程的模型。它采用 IO 多路复用机制同时监听多个 socket,根据 socket 上的事件来选择对应的事件处理器进行处理。 文件事件处理器的结构包含

  • 代码更清晰,处理逻辑更简单; 不用考虑各种锁的问题,不存在加锁和释放锁的操作,没有因为可能出现死锁而导致的性能问题; 不存在多线程切换而消耗CPU; 无法发挥多核CPU的优势,但可以采用多开几个Redis实例来完善;

  • 本文向大家介绍Redis 为什么是单线程的?相关面试题,主要包含被问及Redis 为什么是单线程的?时的应答技巧和注意事项,需要的朋友参考一下 因为 cpu 不是 Redis 的瓶颈,Redis 的瓶颈最有可能是机器内存或者网络带宽。既然单线程容易实现,而且 cpu 又不会成为瓶颈,那就顺理成章地采用单线程的方案了。 关于 Redis 的性能,官方网站也有,普通笔记本轻松处理每秒几十万的请求。而且

  • 在第5章 管理ElasticSearch的 选择正确的directory实现类——存储模块 一节中讲到了存储类型,即用户可以根据业务需求来配置存储模块。但是我们并没有介绍存储模块的每一个知识点——至少没有介绍I/O限流的相关知识。 控制I/O流量