Redis 简介:高性能内存数据库指南

Redis (Remote Dictionary Server) 是一个快速的数据库,它主要用于内存缓存,通过减少磁盘和/或网络读写操作来减轻服务器负载。
Redis 的主要用途包括:

  • 缓存高频访问的数据,以加快访问速度。
  • Web 应用程序的会话存储
  • 实时分析和排行榜。
  • 在后台作业系统中管理队列或任务列表。

Redis 是如何工作的?

Redis 充当数据库与客户端之间的缓存层,旨在加速数据访问并减轻主数据库的负载。当客户端请求数据时,API 网关会将请求转发给 Redis。

!<a href="https://media.geeksforgeeks.org/wp-content/uploads/20250702114605187766/workingofredisserver.webp">workingofredisserverRedis 的工作原理

如果 Redis 拥有该数据(缓存命中),它会通过 API 网关迅速将其返回给客户端。如果数据缺失(缓存未命中),Redis 会从数据库中检索该数据,将其存储在缓存中以备将来请求,然后再通过 API 网关将其传递给客户端。这种流程加快了响应时间并减轻了数据库的负载。

> 在开始学习 Redis 之前,我们需要先在系统中 安装 redis

现在让我们通过一个示例来理解这一点:

Python


CODEBLOCK_6e7f16b4

输出结果

!code-1

理解上面的示例:

import redis

这一行导入了 redis Python 库,它允许我们从 Python 代码与 Redis 服务器进行通信。

r = redis.Redis(host=‘localhost‘, port=6379, db=0)

在这里,我们正在创建一个 Redis 连接:

  • host=‘localhost‘:连接到运行在你本地计算机上的 Redis
  • port=6379:Redis 监听的默认端口
  • db=0:Redis 支持多个从 0 开始编号的逻辑数据库,这里你使用的是数据库 0

因此,这个 "r" 变量现在就是你与 Redis 交互的句柄。

r.set(‘name‘, ‘Alia‘)

这一行在 Redis 中存储了键 INLINECODE107abf92 和对应的值 INLINECODEcd000c26。

print(r.get(‘name‘).decode(‘utf-8‘))

这会从 Redis 中检索存储在键 INLINECODEb04fe03a 下的值(即 INLINECODEa04c093a)。

  • INLINECODE5740a387 以字节格式返回值,例如 INLINECODE1a815957
  • .decode(‘utf-8‘) 将这些字节转换为普通字符串,从而打印出 Alia

> 注意: 在本例中,Redis 与 Python 集成在一起,但我们也可以通过使用相应的 Redis 客户端库,在 Java、JavaScript (Node.js)、Go、Ruby、C# (.NET)、PHP 等许多其他编程语言中实现 Redis。

什么时候应该使用 Redis 服务器?

假设我们有一个 MySQL 数据库,并且我们不断地查询数据库,这需要从辅助存储中读取数据,计算结果,然后返回结果。

如果数据库中的数据变化不大,我们可以直接将查询结果存储在 Redis 服务器中。这样,与其查询可能需要 100-1000 毫秒的数据库,不如直接检查查询结果是否已经存在于 Redis 中。如果存在,直接返回结果,这将快得多,因为数据已经在内存中准备好了。

> 注意: 在消息应用中,我们可以使用 Redis 利用内置的列表数据结构,来存储用户发送和接收的最后五条消息。

为什么 Redis 如此之快?

Redis 之所以快,是因为它将所有数据保存在内存中而不是磁盘上,因此它不会浪费时间从硬盘读取数据。它还使用单线程配合事件循环来处理命令,这避免了管理多线程带来的复杂性和延迟。

此外,Redis 使用了高度优化的数据结构,以及一种名为 RESP 的简单、轻量级通信协议来进行网络通信。这些设计选择意味着 Redis 可以同时处理大量请求,延迟极低,并且几乎可以即时响应。

> 阅读更多:为什么 Redis 如此之快且如此流行?

Redis 与 MongoDB 的区别

Redis 和 MongoDB 都是广泛使用的数据库,但它们之间存在一些你需要了解的关键区别:

MongoDB

Redis

基于文档的 NoSQL 数据库

内存中的键值存储,NoSQL

将数据存储为 BSON 文档(类似 JSON)

将数据存储为键值对、字符串、集合、列表、哈希等

基于磁盘,持久化存储

主要基于内存,但也可以将数据持久化到磁盘 (RDB, AOF)

与 Redis 等内存存储相比较慢

由于内存存储,速度极快

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。如需转载,请注明文章出处豆丁博客和来源网址。https://shluqu.cn/47710.html
点赞
0.00 平均评分 (0% 分数) - 0