次の方法で共有


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

適用対象: 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 Database for MySQL - フレキシブル サーバーの無料トライアル」を参照してください。

  • Azure portal を使って Azure Database for MySQL - フレキシブル サーバー インスタンスを作成します
    または Azure CLI を使います (ない場合)。

  • 自分の IP アドレスからアクセスできるように、Azure Database for MySQL フレキシブル サーバー インスタンスのネットワーク設定を構成します。 Azure App Service または Azure Kubernetes サービスを使っている場合は、Azure portal で設定 [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 Cache を作成する

  1. キャッシュを作成するには、Azure portal にサインインします。 ポータル メニューで、[リソースの作成] を選択します。

    Azure portal の左側のナビゲーション ウィンドウ上で強調表示されている [リソースの作成] オプションを示すスクリーンショット。

  2. [作業の開始] ペインで、検索バーに「Azure Cache for Redis」と入力します。 検索結果で、Azure Cache for Redis を見つけた後、[作成] を選択します。

    検索ボックスに Azure Cache for Redis が入力され、[作成] ボタンが強調表示されている Azure Marketplace を示すスクリーンショット。

  3. [新しい Redis Cache] ペインの [基本] タブで、以下のキャッシュの設定を構成します。

    設定 アクション 説明
    サブスクリプション Azure サブスクリプションを選択します。 Azure Cache for Redis の新しいインスタンスの作成に使用するサブスクリプション。
    リソース グループ リソース グループを選択するか、 [新規作成] を選択し、新しいリソース グループの名前を入力します。 その中にキャッシュやその他のリソースを作成するリソース グループの名前。 すべてのアプリ リソースを 1 つのリソース グループに配置することで、それらをまとめて簡単に管理または削除できます。
    DNS 名 一意の名前を入力します。 キャッシュ名は、数字、英字、ハイフンのみを含む 1 から 63 文字の文字列とする必要があります。 名前の先頭と末尾には数字または文字を使用する必要があり、連続するハイフンを含めることはできません。 キャッシュ インスタンスの "ホスト名" は \<DNS name>.redis.cache.windows.net です。
    場所 場所を選択します。 キャッシュを使用する他のサービスに近い Azure リージョン
    キャッシュ SKU SKU を選択します。 この SKU によって、このキャッシュで利用できるサイズ、パフォーマンス、機能のパラメーターが決まります。 詳細については、Azure Cache for Redis の概要に関するページを参照してください。
    キャッシュ サイズ キャッシュ サイズを選択します。 詳細については、Azure Cache for Redis の概要に関するページを参照してください。
  4. [ネットワーク] タブを選択するか、[次へ: ネットワーク] を選択します。

  5. [ネットワーク] タブで、キャッシュで使用する接続方法を選択します。

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

  7. [詳細] ペインで、以下の情報に基づいて認証方法を確認または選択します。

    [詳細] ペインと選択できる利用可能なオプションを示すスクリーンショット。

    • 既定では、新しい Basic、Standard、または Premium キャッシュでは、Microsoft Entra 認証が有効になり、アクセス キー認証が無効になります。
    • Basic または Standard キャッシュの場合は、非 TLS ポートを選択できます。
    • Standard および Premium キャッシュの場合は、可用性ゾーンを有効にすることを選択できます。 キャッシュの作成後に可用性ゾーンを無効にすることはできません。
    • Premium キャッシュを利用する場合は、非 TLS ポート、クラスタリング、マネージド ID、データ永続化の設定を構成します。

    重要

    最適なセキュリティを確保するため、可能であれば、キャッシュに対する要求を認可するのに Microsoft Entra ID とマネージド ID を使用することをお勧めします。 Microsoft Entra ID とマネージド ID を使用した認可は、共有アクセス キー認可よりも優れたセキュリティと使いやすさを提供します。 キャッシュでマネージド ID を使用する方法の詳細については、「キャッシュ認証での Microsoft Entra ID の使用」を参照してください。

  8. (省略可能) [タグ] タブを選択するか、[次へ: タグ] を選択します。

  9. (省略可能) キャッシュ リソースを分類したい場合は、[タグ] タブで、タグの名前と値を入力します。

  10. [確認および作成] ボタンを選択します。

    [確認と作成] タブでは、Azure が構成を自動的に検証します。

  11. 緑色の検証に成功のメッセージが表示された後、 [作成] を選択します。

新しいキャッシュのデプロイは数分で完了します。 デプロイの進行状況は、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='db-user-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! Happy blogging. /*

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 プラグインを使ってパフォーマンスの向上を評価し、データベース クエリをデバッグすることができ、プラグインによってグループ化されたデータベース クエリの合計数も示されます。

次のステップ

このクイックスタートでは、Azure Cache for Redis のインスタンスを作成し、それを Azure Database for MySQL フレキシブル サーバーで使う方法を説明しました。 Azure Database for MySQL フレキシブル サーバーのパフォーマンスのベスト プラクティスに関する記事をご覧ください。