次の方法で共有


チュートリアル: Azure Cache for Redis を使用して Azure Database for MySQL - フレキシブル サーバーのパフォーマンスを向上させる

この記事では、Azure Cache for Redis を使って Azure Database for MySQL フレキシブル サーバー インスタンスのパフォーマンスを向上させる方法を見ていきます。 Azure Cache for Redis は、高スループットで低遅延のデータ アクセスをアプリケーションに提供する、セキュリティで保護されたデータ キャッシュおよびメッセージング ブローカーです。

前提条件

このクイックスタートでは、以下が必要です。

  • アクティブなサブスクリプションが含まれる Azure アカウント。

Azure サブスクリプションをお持ちでない場合は、開始する前に Azure 無料アカウントを作成してください。 現在、Azure 無料アカウントがあれば、Azure Database for MySQL - フレキシブル サーバーを 12 か月間無料でお試しいただけます。 詳細については、「Azure 無料アカウントを使用して Azure Database for MySQL - フレキシブル サーバーを無料で試す」を参照してください。

問題がある場合は、 お知らせください

MySQL データベースにデータを設定する

Azure Database for MySQL - フレキシブル サーバーで MySQL Workbench を使用する」にアクセスし、次のクエリを実行してデータベースを設定します。

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 Cache を作成する

  1. Azure portal で、Azure Cache for Redis を検索して選択します。

  2. Azure Cache for Redis ページで作成>Azure Cache for Redis を選択します。

  3. [新しい Redis Cache] ページの [基本] タブで、次の設定を構成します。

    • [サブスクリプション] : 使用するサブスクリプションを選択します。
    • リソース グループ: リソース グループを選択するか、[ 新規作成 ] を選択して新しいリソース グループ名を入力します。 すべてのアプリ リソースを同じリソース グループに配置すると、それらを簡単に管理または削除できます。
    • 名前: リージョン内で一意のキャッシュ名を入力します。 名前は次の必要があります。
      • 1 ~ 63 文字の文字列を指定します。
      • 数字、文字、ハイフンのみを含みます。
      • 先頭と末尾に数字または文字を使用します。
      • 連続するハイフンを含まない。
    • リージョン: キャッシュを使用する他のサービスの近くにある Azure リージョン を選択します。
    • キャッシュ SKU: 使用可能なサイズ、パフォーマンス、およびキャッシュの機能を決定する SKU を選択します。
    • キャッシュ サイズ: キャッシュ サイズを選択します。 詳細については、Azure Cache for Redis の概要に関するページを参照してください。

    [新しい Redis Cache] ページの [基本] タブを示すスクリーンショット。

  4. [ネットワーク] タブ 選択するか、[ 次へ: ネットワーク] を選択します。

  5. [ネットワーク] タブで、キャッシュに使う接続方法を選びます。 セキュリティにはプライベート エンドポイント をお勧めします。 [プライベート エンドポイント] を選択した場合は、[プライベート エンドポイントの追加] を選択し、プライベート エンドポイントを作成します。

  6. [ 詳細設定 ] タブを選択するか、[ 次へ: 詳細設定] を選択します。

  7. [ 詳細設定 ] ウィンドウで、次のオプションを構成します。

    • Microsoft Entra 認証またはアクセス キー認証を選択します。 Microsoft Entra 認証 は既定で有効になっています。
    • TLS 以外のポートを 有効に するかどうかを選択します。
    • Premium キャッシュの場合は、 可用性ゾーンを構成または無効にすることができます。 キャッシュの作成後に可用性ゾーンを無効にすることはできません。 Standard キャッシュの場合、可用性ゾーンは自動的に割り当てられます。 可用性ゾーンは Basic SKU では使用できません。
    • Premium キャッシュの場合は、 レプリカ数クラスタリングシャード数システム割り当てマネージド IDおよびデータ永続化の設定を構成します。

    次の図は、Standard SKU の [詳細設定 ] タブを示しています。

    Standard SKU キャッシュの [詳細] ウィンドウを示すスクリーンショット。

    重要

    可能であれば、マネージド ID と共に Microsoft Entra ID を使用して、キャッシュに対する要求を承認します。 Microsoft Entra ID とマネージド ID を使用した承認により、セキュリティが向上し、共有アクセス キーの承認よりも簡単に使用できます。 キャッシュでのマネージド ID の使用について詳しくは、キャッシュ認証への Microsoft Entra ID の使用に関する記事をご覧ください。

  8. 必要に応じて、[ タグ ] タブを選択するか、[ 次へ: タグ] を選択し、タグ名と値を入力してキャッシュ リソースを分類します。

  9. [ 確認と作成] を選択し、検証に合格したら [ 作成] を選択します。

新しいキャッシュのデプロイには数分かかります。 デプロイの進行状況は、ポータルの Azure Cache for Redis ページで監視できます。 キャッシュの状態が [実行中] と表示されたら、キャッシュを使用する準備が整います。

Python での Redis の使用

最新バージョンの Python を、ローカル環境、Azure 仮想マシン、または Azure App Service にインストールします。 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()

PHP で Redis を使用する

PHP をローカル環境にインストールします。 次の手順に沿って、Azure Database for MySQL フレキシブル サーバー データベースから SQL クエリをキャッシュする PHP スクリプトを作成します。 スクリプトを実行するには、次のようないくつかの前提条件があります。

  1. PHP スクリプトで Azure Cache for Redis を使うため、Redis PECL 拡張機能をインストールして有効にします。 拡張機能をローカル環境にインストールする方法に関するページをご覧ください
  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 にインストールする方法に関するページをご覧ください。

Redis Object Cache をインストールし、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 設定ページを選びます。 次に、[Enable Object Cache] (Object Cache を有効にする) を選びます。 プラグインによって、wp-config.php ファイルから Azure Cache for Redis インスタンス情報が読み取られます。

W3 Total Cache を使って、WordPress アプリで Azure Cache for Redis を構成することもできます。 Query Monitor プラグインを使ってパフォーマンスの向上を評価し、データベース クエリをデバッグすることができ、プラグインによってグループ化されたデータベース クエリの合計数も示されます。

次のステップ