次の方法で共有


チュートリアル: 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 にサインインし、 [リソースの作成] を選択します。

    左側のナビゲーション ペインの [リソースの作成] が強調表示されています。

  2. [開始] ページ上で、検索ボックス内に「Azure Cache for Redis」と入力します。 次に、[作成] を選択します。

    検索ボックス内に

  3. [新規 Redis Cache] ページ上で、キャッシュの設定を構成します。

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

  5. [ネットワーク] タブで、接続方法を選択します。

  6. [次へ: 詳細設定] タブを選択するか、ページの下部にある [次へ: 詳細設定] ボタンを選択して、[詳細設定] タブを表示します。

    作業ウィンドウの [詳細設定] タブ、および選択できるオプションを示すスクリーンショット。

    • Basic または Standard キャッシュを利用する場合は、非 TLS ポートの選択をオンにします。 Microsoft Entra 認証を有効にするかどうかを選択することもできます。
    • Premium キャッシュを利用する場合は、非 TLS ポート、クラスタリング、マネージド ID、データ永続化の設定を構成します。 Microsoft Entra 認証を有効にするかどうかを選択することもできます。

    重要

    最適なセキュリティのため、Microsoft では、可能な限り、Microsoft Entra ID とマネージド ID を使って、キャッシュに対する要求を認可することをおすすめします。 Microsoft Entra ID とマネージド ID を使った認可によって、共有キー認可よりもセキュリティが向上し、使いやすくなります。 キャッシュでマネージド ID を使用する方法の詳細については、「キャッシュ認証に Microsoft Entra ID を使用する」を参照してください。

  7. ページの下部にある [次へ: タグ] タブを選択するか、ページの下部にある [次へ: タグ] ボタンを選択します。

  8. 必要に応じて、 [タグ] タブで、リソースを分類する場合は名前と値を入力します。

  9. [Review + create](レビュー + 作成) を選択します。 [確認および作成] タブが表示され、Azure によって構成が検証されます。

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

キャッシュが作成されるまで、しばらく時間がかかります。 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 フレキシブル サーバーのパフォーマンスのベスト プラクティスに関する記事をご覧ください。