如您所知,Redis 是一个用 C 语言编写的开源数据结构服务器。您可以存储多种数据类型,如字符串、哈希和流,并通过唯一的键名访问它们。
例如,如果您有一个名为“greeting”的键名下保存的字符串值“Hello World”,您可以通过运行 **GET** 命令,后跟键名 - greeting 来访问它。Redis 数据库中的所有键都存储在一个扁平的键空间中。没有强制执行的模式或命名策略,键空间的组织责任留给开发人员。
Redis 以其速度而闻名,主要是因为 Redis 将所有数据完全存储在 RAM 中,而不是像大多数其他数据库那样存储在磁盘中。另一个因素是它主要采用单线程:单线程避免了与线程相关的竞争条件和 CPU 密集型上下文切换。
的确,这意味着开源 Redis 无法利用多个 CPU 内核的处理能力,尽管对于 Redis 来说,CPU 很少是瓶颈。您更有可能在遇到任何 CPU 限制之前遇到内存或网络限制。也就是说,Redis Cloud 确实可以让您利用单个机器上的所有内核。
现在让我们看一下每个 Redis 请求在幕后到底发生了什么。当客户端向 Redis 服务器发送请求时,请求首先从套接字读取,然后解析和处理,最后,响应写回套接字并发送给用户。读取和特别是写入套接字是昂贵的操作,因此在 Redis 版本 6.0 中引入了多线程 I/O。当启用此功能时,Redis 可以将花费在读取和写入 I/O 套接字上的时间委托给其他线程,从而释放出用于存储和检索数据的周期,并为某些工作负载提高整体性能高达两倍。
在整个部分的剩余部分,您将学习如何使用 Redis 命令行界面、如何配置 Redis 服务器以及如何选择和调整 Redis 客户端库。