如何将 Azure Redis 缓存与 Python 配合使用

Note

本文涉及的 SDK 和工具是在 Microsoft Corporation 运行的 Azure 服务中使用的,而在中国, Azure 是由 21Vianet 运行的。 请根据需要参阅中国区 Azure 应用程序开发说明

本主题说明如何将Azure Redis 缓存与 Python 配合使用。

先决条件

安装 redis-py

在 Azure 上创建 Redis 缓存

若要创建缓存,请先登录到 Azure 门户,然后单击“新建” > “数据库” > “Redis 缓存”。

Note

如果没有 Azure 帐户,只需花费几分钟就能建立一个 Azure 帐户

新建缓存

Note

除了在 Azure 门户中创建缓存以外,也可以使用 Resource Manager 模板、PowerShell 或 Azure CLI 来创建。

在“新建 Redis 缓存”边栏选项卡中,指定所需的缓存配置 。

创建缓存

  • 在“DNS 名称”中,输入用于缓存终结点的唯一缓存名称。 缓存名称必须是包含 1 到 63 个字符的字符串,只能包含数字、字母和 - 字符。 缓存名称的开头或末尾不能是 - 字符,并且连续的 - 字符无效。
  • 对于“订阅”,请选择需要用于缓存的 Azure 订阅。 如果帐户只有一个订阅,将自动选择该订阅并且不显示“订阅”下拉菜单。
  • 在“资源组” 中,为缓存选择或创建资源组。 有关详细信息,请参阅使用资源组管理 Azure 资源
  • 使用“位置”指定在其中托管你的缓存的地理位置 。 Microsoft 强烈推荐的最佳做法,是在与缓存客户端应用程序相同的区域中创建缓存。
  • 使用“定价层” 选择所需的缓存大小和功能。
  • Redis 群集 允许你创建大于 53 GB 的缓存,以及将数据分散到多个 Redis 节点。 有关详细信息,请参阅 如何为高级 Azure Redis 缓存配置群集功能
  • Redis 持久性 可让你将缓存保存到 Azure 存储帐户。 有关配置暂留的说明,请参阅 《How to configure persistence for a Premium Azure Redis Cache》(如何为高级 Azure Redis 缓存配置暂留)。
  • 虚拟网络 通过将缓存访问权限限制于指定的 Azure 虚拟网络内的客户端,提供增强的安全性和隔离度。 可以使用 VNet 的所有功能,例如子网、访问控制策略和其他功能,进一步限制对 Redis 的访问。 有关详细信息,请参阅 如何为高级 Azure Redis 缓存配置虚拟网络支持
  • 默认情况下,为新缓存禁用非 SSL 访问。 若要启用非 SSL 端口,请选中“取消阻止端口 6379 (非 SSL 加密)”。

在配置了新的缓存选项后,单击“创建” 。 创建缓存可能耗时几分钟。 要检查的状态,可以监视开始板上的进度。 创建缓存后,新缓存的状态为“正在运行” 并且随时可与 默认设置搭配使用。

创建的缓存

检索主机名和访问密钥

若要连接到某个 Azure Redis 缓存实例,缓存客户端需要该缓存的主机名、端口和密钥。 在某些客户端中,这些项的名称可能略有不同。 可以在 Azure 门户中检索该信息,也可以通过命令行工具(例如 Azure CLI)来检索。

使用 Azure 门户检索主机名、端口和访问密钥

若要使用 Azure 门户检索主机名、端口和访问密钥,请浏览Azure 门户中的缓存,然后在“设置”中单击“访问密钥”和“属性”。

Redis 缓存设置

使用 Azure CLI 检索主机名、端口和访问密钥

若要使用 Azure CLI 2.0 检索主机名和端口,可调用 az redis show;若要检索密钥,可调用 az redis list-keys。 以下脚本调用这两个命令,并将主机名、端口和密钥回显到控制台。

#/bin/bash

# Retrieve the hostname, ports, and keys for contosoCache located in contosoGroup

# Retrieve the hostname and ports for an Azure Redis Cache instance
redis=($(az redis show --name contosoCache --resource-group contosoGroup --query [hostName,enableNonSslPort,port,sslPort] --output tsv))

# Retrieve the keys for an Azure Redis Cache instance
keys=($(az redis list-keys --name contosoCache --resource-group contosoGroup --query [primaryKey,secondaryKey] --output tsv))

# Display the retrieved hostname, keys, and ports
echo "Hostname:" ${redis[0]}
echo "Non SSL Port:" ${redis[2]}
echo "Non SSL Port Enabled:" ${redis[1]}
echo "SSL Port:" ${redis[3]}
echo "Primary Key:" ${keys[0]}
echo "Secondary Key:" ${keys[1]}

有关此脚本的详细信息,请参阅获取 Azure Redis 缓存的主机名、端口和密钥。 有关 Azure CLI 2.0 的详细信息,请参阅 Install Azure CLI 2.0(安装 Azure CLI 2.0)和 Get started with Azure CLI 2.0(Azure CLI 2.0 入门)。

启用非 SSL 终结点

某些 Redis 客户端不支持 SSL,默认情况下,为新的 Azure Redis 缓存实例禁用了非 SSL 端口。在编写本文时,redis-py 客户端不支持 SSL。

若要启用非 SSL 端口,请在Azure 门户浏览到缓存,然后单击“设置”>“高级设置”。对“高级设置”边栏选项卡中的“仅允许通过 SSL 访问”单击“否”,然后单击“保存”。

Redis 缓存设置

在缓存中添加一些内容并检索此内容

>>> import redis
>>> r = redis.StrictRedis(host='<name>.redis.cache.chinacloudapi.cn',
      port=6380, db=0, password='<key>', ssl=True)
>>> r.set('foo', 'bar')
True
>>> r.get('foo')
b'bar'

<name> 替换为你的缓存名称,将 key 替换为你的缓存访问密钥。