Skip to content

一幅图看懂 Redis 查询执行过程

详细解析

  1. 客户端发起请求

    • 客户端向 Redis 客户端发送 GET anki_ai.user.id.free_cnt 命令
    • 这是一个获取用户剩余免费操作次数的查询操作
  2. Redis 客户端处理

    • Redis 客户端接收到命令后,会进行命令解析
    • 解析出这是一个 GET 命令,以及要查询的键名 anki_ai.user.id.free_cnt
  3. Redis 服务器接收

    • Redis 客户端将解析后的命令发送给 Redis 服务器
    • Redis 服务器运行在单线程的事件循环模型中
  4. 事件循环处理

    • 服务器将命令放入事件循环队列
    • 事件循环将命令传递给命令处理器
  5. 命令处理

    • 命令处理器接收到命令后,向内存存储查询键值
    • 这里会检查键是否存在
  6. 结果处理(两种情况)

    • 如果键存在:
      • 内存存储返回对应的值
      • 值通过命令处理器 → 事件循环 → Redis 服务器 → Redis 客户端 → 最终返回给客户端
    • 如果键不存在:
      • 内存存储返回 nil
      • nil 值同样通过上述路径返回给客户端
  7. 重要特性说明

    • 所有操作都在内存中完成,时间复杂度为 O(1)
    • 持久化操作(RDB/AOF)是异步执行的,不会影响主流程

这个流程图很好地展示了 Redis 的以下特点:

  • 单线程事件循环模型
  • 内存操作的高效性
  • 清晰的命令处理流程
  • 异步持久化机制

这种设计使得 Redis 能够高效处理大量的并发请求,同时保持数据的一致性和可靠性。