你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
本文演示了如何使用 Azure Cache for Redis 提高 Azure Database for MySQL 灵活服务器实例的性能。 Azure Cache for Redis 是一个安全的数据缓存和消息传送中转站,可让应用程序以较高的吞吐量、较低的延迟访问数据。
先决条件
对于本快速入门,你需要:
- 具有活动订阅的 Azure 帐户。
如果没有 Azure 订阅,请在开始之前创建一个 Azure 免费帐户。 目前,通过 Azure 免费帐户,可以在 12 个月内免费试用 Azure Database for MySQL - 灵活服务器。 有关详细信息,请参阅使用 Azure 免费帐户免费试用 Azure Database for MySQL - 灵活服务器。
- 按照以下文章创建 Azure Database for MySQL 灵活服务器实例:快速入门:使用 Azure 门户创建 Azure Database for MySQL 的实例
或是快速入门:使用 Azure CLI 创建 Azure Database for MySQL 灵活服务器实例(如果尚无实例)。 - 配置 Azure Database for MySQL 灵活服务器实例的网络设置,以确保 IP 可以访问它。 如果使用的是 Azure 应用服务或 Azure Kubernetes 服务,请在 Azure 门户中启用“允许从 Azure 中的任何 Azure 服务对此服务器进行公共访问”设置。
填充 MySQL 数据库
连接至将 MySQL Workbench 与 Azure Database for MySQL 灵活服务器配合使用,然后运行以下查询来填充数据库。
CREATE DATABASE tododb;
CREATE TABLE tasks
(
id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
title nvarchar(100) NOT NULL,
completed TINYINT(1) NOT NULL
);
INSERT INTO tasks (id,title, completed) VALUES
(1,'Task1', 0),
(2,'Task2', 0),
(3,'Task3', 1),
(4,'Task4', 1),
(5,'Task5', 0);
创建 Redis 缓存
在 Azure 门户中,搜索并选择 Azure Redis 缓存。
在 Azure Redis 缓存 页上,选择“ 创建>Azure Redis 缓存”。
在“新建 Redis 缓存”页的“基本信息”选项卡上,配置以下设置:
- 订阅:选择要使用的订阅。
- 资源组:选择资源组,或选择 “新建 ”并输入新的资源组名称。 将所有应用资源放在同一资源组中即可轻松管理或删除它们。
- 名称:输入区域中唯一的缓存名称。 名称必须:
- 字符串的长度应为 1 到 63 个字符。
- 仅包含数字、字母和连字符。
- 以数字或字母开头和结尾。
- 不包含连续的连字符。
- 区域:选择使用缓存的其他服务附近的 Azure 区域 。
- 缓存 SKU:选择 SKU 来确定缓存的可用大小、性能和功能。
- 缓存大小:选择缓存大小。 有关详细信息,请参阅 Azure Cache for Redis 概述。
选择“ 网络 ”选项卡,或选择“ 下一步:网络”。
在“网络”选项卡上,选择用于缓存的连接方法。 建议使用专用终结点实现安全性。 如果选择 “专用终结点”,请选择“ 添加专用终结点 ”并创建专用终结点。
选择“ 高级 ”选项卡,或选择“ 下一步:高级”。
在 “高级 ”窗格中,配置以下选项:
- 选择 Microsoft Entra 身份验证 或 访问密钥身份验证。 默认情况下,Microsoft Entra Authentication 处于启用状态。
- 选择是否 启用 非 TLS 端口。
- 对于高级缓存,可以配置或禁用 可用性区域。 创建缓存后,无法禁用可用性区域。 对于标准缓存,会自动分配可用性区域。 可用性区域不适用于基本 SKU。
- 对于高级缓存,请配置 副本计数、 群集 和 分片计数、 系统分配的托管标识和数据 持久性的设置。
下图显示了标准 SKU 的 “高级 ”选项卡。
重要
将 Microsoft Entra ID 与托管标识一起使用,以授权针对缓存的请求(如果可能)。 使用 Microsoft Entra ID 和托管标识的授权可提供更好的安全性,并且比共享访问密钥授权更容易使用。 若要详细了解如何将托管标识与缓存配合使用,请参阅使用 Microsoft Entra ID 进行缓存身份验证。
(可选)选择“ 标记 ”选项卡或选择“ 下一步:标记”,然后输入标记名称和值以对缓存资源进行分类。
选择 “查看 + 创建”,验证通过后,选择“ 创建”。
新的缓存部署需要几分钟时间。 可以在门户 Azure Redis 缓存页上监视部署进度。 当缓存 状态 显示 “正在运行”时,缓存可供使用。
将 Redis 用于 Python
在本地环境或者 Azure 虚拟机或 Azure 应用服务上安装最新版 Python。 使用 pip 安装 redis-py。
pip install redis
以下代码使用 redis-py 创建与 Azure Cache for Redis 实例的连接,将查询结果存储在 Azure Cache for Redis 中,并从该缓存中提取值。
import redis
import mysql.connector
r = redis.Redis(
host='your-azure-redis-instance-name.redis.cache.windows.net',
port=6379,
password='azure-redis-primary-access-key')
mysqlcnx = mysql.connector.connect(user='your-admin-username', password='<password>',
host='database-servername.mysql.database.azure.com',
database='your-databsae-name')
mycursor = mysqlcnx.cursor()
mycursor.execute("SELECT * FROM tasks where completed=1")
myresult = mycursor.fetchall()
#Set the result of query in a key
if result:
cache.hmset(mykey, myresult)
cache.expire(mykey, 3600)
return result
#Get value of mykey
getkeyvalue= cache.hgetall(mykey)
#close mysql connection
mysqlcnx.close()
将 Redis 与 PHP 结合使用
在本地环境中安装 PHP。 按照以下步骤编写 PHP 脚本,用于缓存来自 Azure Database for MySQL 灵活服务器数据库的 SQL 查询。 以下是运行该脚本之前需满足的一些先决条件:
- 安装并启用 Redis PECL 扩展以将 Azure Cache for Redis 与 PHP 脚本配合使用。 请参阅如何在本地安装扩展
- 安装并启用 MySQL PDO 扩展
<?php
$redis = new Redis();
$redis->connect('azure-redis-instance-ame.redis.cache.windows.net', 6379);
$redis->auth('azure-redis-primary-access-key');
$key = 'tasks';
if (!$redis->get($key)) {
/*Pulling data from MySQL database*/
$database_name = 'database-name';
$database_user = 'your-database-user';
$database_password = 'your-database-password';
$mysql_host = 'database-servername.mysql.database.azure.com';
$pdo = new PDO('mysql:host=' . $mysql_host . '; dbname=' . $database_name, $database_user, $database_password);
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM tasks";
$stmt = $pdo->prepare($sql);
$stmt->execute();
while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {
$tasks[] = $row;
}
$redis->set($key, serialize($tasks));
$redis->expire($key, 10);
} else {
/*Pulling data from Azure Cache for Redis*/
$tasks = unserialize($redis->get($key));
}
echo $source . ': <br>';
print_r($tasks);
使用 Redis 和 WordPress
通过为 WordPress 应用程序启用 Azure Cache for Redis 实例,你可以更快地传送内容,因为所有 WordPress 内容都存储在数据库中。 可以缓存主要仅从 WordPress 数据库读取的内容,以加快查询查找速度。 可以使用其中任一插件来设置 Redis。 安装并启用 Redis PECL 扩展。 请参阅如何在本地安装扩展或如何在 Azure 应用服务中安装扩展。
安装 Redis 对象缓存并在 WordPress 应用程序上激活此插件。 现在,更新 wp-config.php
文件中以下语句上方的内容:/ That's all, stop editing! 快乐博客。 /*
define( 'WP_REDIS_HOST', 'azure-redis-servername.redis.cache.windows.net' );
define( 'WP_REDIS_PORT', 6379 );
define( 'WP_REDIS_PASSWORD', 'azure-redis-primary-access-key' );
define( 'WP_REDIS_TIMEOUT', 1 );
define( 'WP_REDIS_READ_TIMEOUT', 1 );
// change the database for each site to avoid cache collisions
// values 0-15 are valid in a default redis config.
define( 'WP_REDIS_DATABASE', 0 );
// automatically delete cache keys after 7 days
define( 'WP_REDIS_MAXTTL', 60 * 60 * 24 * 7 );
// bypass the object cache, useful for debugging
// define( 'WP_REDIS_DISABLED', true );
/* That's all, stop editing! Happy blogging. */
转到 Wordpress 管理员仪表板,然后在菜单上选择 Redis 设置页。 现在选择启用对象缓存。 该插件将从 wp-config.php
文件中读取 Azure Cache for Redis 实例信息。
还可以使用 W3 Total Cache 在 WordPress 应用上配置 Azure Cache for Redis。 可以使用查询监视器插件评估性能改进情况,该插件允许调试数据库查询,还能显示按插件分组的数据库查询总数。