你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

教程:使用 Azure Cache for Redis 提高 Azure Database for MySQL 灵活服务器性能

本文演示了如何使用 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 - 灵活服务器

遇到问题? 请告诉我们

填充 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 缓存

  1. Azure 门户中,搜索并选择 Azure Redis 缓存

  2. Azure Redis 缓存 页上,选择“ 创建>Azure Redis 缓存”。

  3. “新建 Redis 缓存”页的“基本信息”选项卡上,配置以下设置:

    • 订阅:选择要使用的订阅。
    • 资源组:选择资源组,或选择 “新建 ”并输入新的资源组名称。 将所有应用资源放在同一资源组中即可轻松管理或删除它们。
    • 名称:输入区域中唯一的缓存名称。 名称必须:
      • 字符串的长度应为 1 到 63 个字符。
      • 仅包含数字、字母和连字符。
      • 以数字或字母开头和结尾。
      • 不包含连续的连字符。
    • 区域:选择使用缓存的其他服务附近的 Azure 区域
    • 缓存 SKU:选择 SKU 来确定缓存的可用大小、性能和功能。
    • 缓存大小:选择缓存大小。 有关详细信息,请参阅 Azure Cache for Redis 概述

    显示“新建 Redis 缓存”页的“基本信息”选项卡的屏幕截图。

  4. 选择“ 网络 ”选项卡,或选择“ 下一步:网络”。

  5. 在“网络”选项卡上,选择用于缓存的连接方法。 建议使用专用终结点实现安全性。 如果选择 “专用终结点”,请选择“ 添加专用终结点 ”并创建专用终结点。

  6. 选择“ 高级 ”选项卡,或选择“ 下一步:高级”。

  7. “高级 ”窗格中,配置以下选项:

    • 选择 Microsoft Entra 身份验证访问密钥身份验证。 默认情况下,Microsoft Entra Authentication 处于启用状态。
    • 选择是否 启用 非 TLS 端口。
    • 对于高级缓存,可以配置或禁用 可用性区域。 创建缓存后,无法禁用可用性区域。 对于标准缓存,会自动分配可用性区域。 可用性区域不适用于基本 SKU。
    • 对于高级缓存,请配置 副本计数群集分片计数系统分配的托管标识和数据 持久性的设置。

    下图显示了标准 SKU 的 “高级 ”选项卡。

    显示标准 SKU 缓存的高级窗格的屏幕截图。

    重要

    将 Microsoft Entra ID 与托管标识一起使用,以授权针对缓存的请求(如果可能)。 使用 Microsoft Entra ID 和托管标识的授权可提供更好的安全性,并且比共享访问密钥授权更容易使用。 若要详细了解如何将托管标识与缓存配合使用,请参阅使用 Microsoft Entra ID 进行缓存身份验证

  8. (可选)选择“ 标记 ”选项卡或选择“ 下一步:标记”,然后输入标记名称和值以对缓存资源进行分类。

  9. 选择 “查看 + 创建”,验证通过后,选择“ 创建”。

新的缓存部署需要几分钟时间。 可以在门户 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 查询。 以下是运行该脚本之前需满足的一些先决条件:

  1. 安装并启用 Redis PECL 扩展以将 Azure Cache for Redis 与 PHP 脚本配合使用。 请参阅如何在本地安装扩展
  2. 安装并启用 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。 可以使用查询监视器插件评估性能改进情况,该插件允许调试数据库查询,还能显示按插件分组的数据库查询总数。

下一步