共用方式為


教學課程:使用 Azure Cache for Redis 提升「適用於 MySQL 的 Azure 資料庫 - 彈性伺服器」效能

本文示範如何使用 Azure Cache for Redis 來提升 適用於 MySQL 的 Azure 資料庫 彈性伺服器實例的效能。 Azure Cache for Redis 是安全的資料快取和訊息代理程式,為應用程式提供高輸送量且低延遲的資料存取。

必要條件

在本快速入門中,您需要:

  • 具有有效訂用帳戶的 Azure 帳戶。

如果您沒有 Azure 訂閱,請在開始之前先建立 Azure 免費帳戶。 目前,Azure 免費帳戶可讓您免費試用「適用於 MySQL 的 Azure 資料庫 - 彈性伺服器」12 個月。 如需詳細資訊,請參閱使用 Azure 免費帳戶免費試用 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器

有問題嗎? 請告訴我們

填入 MySQL 資料庫

聯機到使用 MySQL Workbench 搭配 適用於 MySQL 的 Azure 資料庫 - 彈性伺服器,然後執行下列查詢來填入資料庫。

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 Cache for Redis]。

  2. [Azure Cache for Redis] 頁面上,選取 [建立>Azure Cache for 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 識別碼搭配受管理的身分,以授權對快取的存取要求。 使用 Microsoft Entra ID 和受控識別的授權可提供更佳的安全性,而且比共用存取密鑰授權更容易使用。 如需搭配快取使用受控識別的詳細資訊,請參閱使用 Microsoft Entra ID 進行快取驗證 (部分機器翻譯)。

  8. 或者,選取 [標籤] 索引標籤或選取 [下一步:標籤],然後輸入標籤名稱和值以分類您的快取資源。

  9. 選取 [檢閱 + 建立],一旦通過驗證,請選取 [ 建立]。

新的快取部署需要幾分鐘的時間。 您可以在入口網站 Azure Cache for Redis 頁面上監視部署進度。 當快取 狀態 顯示 [ 執行中] 時,快取即可供使用。

搭配使用 Redis 與 Python

在您的本機環境或 Azure 虛擬機器或 Azure App Service 上安裝最新版本的 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 腳本,從 適用於 MySQL 的 Azure 資料庫 彈性伺服器資料庫快取 SQL 查詢。 以下是執行該指令碼前的一些必要條件:

  1. 安裝並啟用 Redis PECL 延伸模組,以搭配您的 PHP 指令碼使用 Azure Cache for Redis。 請參閱如何在本機安裝延伸模組
  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);

讓 WordPress 使用 Redis

為您的 WordPress 應用程式啟用 Azure Cache for Redis 執行個體的好處是,您可以更快地傳遞內容,因為所有 WordPress 內容都儲存在資料庫中。 您可以快取 WordPress 資料庫中大部分唯讀的內容,讓查詢查閱更快。 您可以使用這些外掛程式中的任何一個來設定 Redis。 安裝並啟用 Redis PECL 延伸模組。 請參閱如何在本機安裝延伸模組如何在 Azure App Service 中安裝延伸模組

在您的 WordPress 應用程式上安裝 Redis 物件快取並啟用此外掛程式。 現在,請更新陳述式 wp-config.php 正上方的 / 檔案。就這樣,停止編輯! 祝您部落格寫作愉快! /*

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 快取 在 WordPress 應用程式上設定 Azure Cache for Redis。 您可以使用查詢監視器外掛程式來評估效能改善,該外掛程式可讓您對資料庫查詢進行偵錯,而且也會顯示依外掛程式分組的資料庫查詢總數。

後續步驟