学习

正如您可能已经知道的,Redis 是一个用 C 语言编写的开源数据结构服务器。您可以存储多种数据类型,例如字符串、哈希和流,并通过唯一的键名访问它们。

例如,如果您将字符串值“Hello World”保存在键名“greeting”下,您可以通过运行 GET 命令后跟键名 greeting 来访问它。Redis 数据库中的所有键都存储在平面键空间中。没有强制执行的模式或命名策略,组织键空间的责任留给了开发者。

Redis 之所以闻名于世的速度,主要归因于 Redis 完全从 RAM 而非像大多数其他数据库那样从磁盘存储和提供数据。另一个促成因素是其主要采用单线程性质:单线程避免了与线程相关的竞争条件和 CPU 密集型上下文切换。

确实,这意味着开源 Redis 无法利用多核 CPU 的处理能力,尽管 CPU 很少是 Redis 的瓶颈。在达到任何 CPU 限制之前,您更有可能碰到内存或网络限制。话虽如此,Redis Cloud 确实允许您利用单台机器上的所有核心。

现在让我们看看每个 Redis 请求背后究竟发生了什么。当客户端向 Redis 服务器发送请求时,请求首先从 socket 中读取,然后解析和处理,最后将响应写回 socket 并发送给用户。读写 socket 的操作开销很高,因此在 Redis 6.0 版本中引入了多线程 I/O。启用此功能后,Redis 可以将花费在读写 I/O socket 上的时间委托给其他线程,从而释放周期用于存储和检索数据,并对于某些工作负载将整体性能提高多达一倍。

在本节的其余部分,您将学习如何使用 Redis 命令行界面,如何配置 Redis 服务器,以及如何选择和调优 Redis 客户端库。