如何使用 Python 进行 Redis

2025年3月17日 | 阅读 8 分钟

本教程将学习如何使用 Python 编程语言实现 Redis。Redis 是一个闪电般快速的内存键值存储,可用于存储任何内容。本教程将深入解释 Redis 与 Python 的理解,我们将了解一些示例。我们还将学习如何在 Python 中连接和使用 Redis。如果您对 Python 或 Redis 有基本的了解,您将很容易理解 Redis 的概念。在深入本教程之前,让我们先介绍一下 Redis 以及我们为什么使用它。

引言

Redis 是 Remote Dictionary Server 的缩写,是一个开源的 NoSQL 数据库。它被广泛使用,并因其快速、内存中的键值数据存储、消息代理、缓存和队列而闻名。它最初由 Salvatore' antirez' Sanfilippo 开发。Redis 使用 ANSI C 语言编写,可以在大多数 POSIX 系统(如 BSD 和 Linux)中运行,无需任何外部依赖。

它支持广泛的数据类型,例如字符串、哈希、列表、集合、带范围查询的有序集合、位图、超日志和带半径查询的地理空间索引。让我们看看我们为什么要使用 Redis。

Redis 特性

Redis 的功能非常强大,可以通过多种功能增强现有环境。Redis 具有一些必不可少且有益的功能。

广泛的数据结构

Redis 主要提供五种可能的数据支持:哈希、列表、集合、字符串和有序集合。Redis 以键值对的形式存储数据,并提供各种数据结构以满足应用程序需求。

数据持久化

数据持久性指的是数据在特定数据的生产者进程结束后如何存活。换句话说,如果服务器发生故障,保存的数据必须可用。为了确保数据持久性,数据必须存储在非易失性存储中。

性能

Redis 因其性能而闻名,并且由于其内存特性而效率极高。与在将事务提交之前将每个更改写入磁盘的数据库系统相比,Redis 的内存特性表现良好。

高可用性

Redis 允许我们创建和构建高可用解决方案或集群拓扑。它主要是一个单线程服务器,但现代版本的 Redis 使用线程来处理不同的事情。

简单、高效、轻量

因此,它使用 ANSI C 语言编写,并且没有依赖项。该程序在所有 POSIX 环境中都能完美运行。Redis 不支持 Windows 平台,并且 Redis 还支持各种语言,例如 Node.js、PHP、Ruby、Python 等。Redis 拥有庞大而充满活力的社区支持。

缓存

缓存使 Redis 更快,数据存储在临时存储中,将来可以更快地访问。Redis 提供缓存解决方案,例如图像、文件、元数据和持久会话。

在 Windows 上安装 Redis

Windows 官方不支持 Redis。但是,我们可以通过安装 Windows Subsystem for Linux 2 并进行配置来在 Windows 机器中设置 Redis。要安装 Windows 子系统,您可以按照在 Windows 上安装 Linux 的 WSL 指南进行操作。 或者,我们可以使用 Docker 在容器上运行 Redis。为此,我们需要在 Windows 机器中安装 Docker,并且需要从其官方网站下载 Docker Desktop。

下载完成后,在终端中输入以下命令以从 Docker Hub 获取 Redis 镜像。以下命令将帮助构建和运行容器。

按 Enter 键后,使用我们之前下载的 Redis 镜像启动一个容器。

How to Use Redis with Python

现在点击下载按钮。

How to Use Redis with Python

正如我们所看到的,redis 现在正在系统中运行。

How to Use Redis with Python

现在,我们已成功在系统中启动 redis 服务器。

在 Ubuntu 上安装 Redis

第一步是更新 Ubuntu 的仓库缓存。我们可以使用以下命令完成此操作。

现在,输入以下命令安装 Redis。

现在,使用以下命令检查已安装的 redis 版本。

上述命令将显示系统中当前安装的实用程序的版本。

现在,让我们转到 Redis 和 Python 之间的连接设置。

How to Use Redis with Python

安装 Redis-Py

要使用 Python 处理 Redis,我们需要安装 Redis-py 库,它是一个 Python-Redis 客户端。要打开终端,请运行以下命令。

Redis 作为 Python 字典

Redis 代表远程字典服务。我们可以在 Python 字典和 Redis 的工作原理之间找到许多相似之处。

  • Redis 以键值格式存储值,并支持 GET、SET 和 DEL 等命令以及其他数百个命令。
  • Redis 键始终是字符串。
  • Redis 的值可以是任何类型,例如字符串、列表、哈希和集合。一些高级类型包括地理空间项目和新的流类型。
  • 许多 Redis 命令以常量 O(1) 时间操作,就像从 Python 字典或任何哈希表中检索值一样。

让我们在 Redis 上创建我们的第一个数据库,它将是国家:首都的映射,其中我们使用 SET 来设置键值对。


How to Use Redis with Python

使用 Redis-py

要使用 redis-py 执行任何操作,我们需要连接到 redis 服务器,这在 redis-py 中非常直接。我们需要将 decode_response 参数设置为 true,这样我们就不会以字节格式获得响应。

让我们理解以下示例 -

示例 -

现在,我们已经连接到 redis 服务器,我们可以执行简单的 CRUD 操作。

正如我们之前讨论的,它支持 get、set 方法。要设置键值对,我们使用“set”函数,该函数将键和值作为参数。这里要记住的是,我们只能使用字符串数据类型或字节。

与字典相同,我们使用 get 方法获取 India 的值。get 函数接受键并返回值。

Redis 模块提供了 mset 方法来设置多个键值对。顾名思义,mset - multiple set。让我们看以下示例 -

输出

London

Redis 模块提供了 sass 函数来设置键值对,其中值是集合数据类型。集合数据类型存储唯一值。

要获取我们刚刚存储的所有水果值,我们可以使用“smembers”函数。

现在,我们将使用 lpush 函数存储列表数据类型。让我们理解以下示例 -

我们使用 lrange 函数获取列表的所有元素。它帮助我们遍历列表中的元素。我们可以执行与在列表中执行相同的操作。让我们看以下示例 -

我们还可以存储具有不同数据类型的深度嵌套对象;可以使用像 json 或 pickle 这样的序列化技术。让我们理解以下示例 -

示例 -

要提取存储的信息,我们可以直接使用“get”函数,然后撤消 json 执行的字符串化操作。

输出

{'name': 'Megha',
 'age': 25,
 'address': {'house_no': 189, 'flat_name': 'Golden Flower', 'area': 'Guindy'},
 'languages_known': ['english', 'hindi', 'tamil']}

由于它是一个内存数据存储,因此旧的键值对被删除或过期以腾出空间存储新数据非常重要。为此,Redis 提供了键过期选项。现在让我们尝试存储一个带有过期时间的键值对。我们可以使用“setex”函数来设置键值对的过期时间。它接受以秒为单位的 TTL。如果您想以毫秒为单位设置 TTL,可以使用“psetex”函数。

Redis 重要方法

下表包含一些与键值过期相关的关键命令。让我们看以下示例。

方法说明
r.setx(名称, 时间, 值)此方法用于设置在时间秒后过期的关键名称的值,其中时间可以用 int 或 Python timedelta 对象表示。
r.expire(名称, 时间)此方法用于为时间秒后过期的键名设置过期标志,其中时间可以用 int 或 Python timedelta 对象表示。
r.psetex(名称, time_ms, 值)它将键名称的值设置为在 time_ms 毫秒后过期的值,其中 time_ms 可以用 int 或 Python timedelta 对象表示。
r.expireat(名称, 何时)它为键名设置一个过期标志,其中何时可以表示为指示 Unix 时间的 int 或 Python datetime 对象
r.persist(名称)它删除名称的过期时间。
r.ttl(名称)此方法返回键名过期前剩余的秒数。
r.pttl(名称)它返回键名过期前剩余的毫秒数。

使用企业 Redis 应用程序

Redis 是一个开源、可访问的数据库,并有多个托管数据库。它还在开源 Redis 服务器的基础上构建了额外的功能。

  • Amazon ElastiCache for Redis - 此服务允许在云中托管 Redis 服务器,我们可以从 Amazon EC2 实例连接到该服务器。
  • Microsoft Azure Cache for Redis - 这是另一个功能强大的企业级服务,可让您在云中设置可自定义、安全的 Redis 实例。

这两种设计有一些共同点。

结论

本教程包括如何通过 Python 实现 Redis,包括安装和使用连接到 Redis 服务器的 Redis REPL 以及在实时示例中使用 redis-py。

我们学习了如何通过直观的 Python API 激活 Redis CLI。我们学习了如何将数据存储在数据库中。

本教程未涵盖 Redis 的一些重要概念。但是,您可以查阅其官方文档。本教程将帮助您很好地了解如何将 Python 与 Redis 嵌入。