다음을 통해 공유


자습서: Azure Cache for Redis로 Azure Database for MySQL - 유연한 서버의 성능 향상

이 문서에서는 Azure Cache for Redis를 사용하여 Azure Database for MySQL 유연한 서버 인스턴스의 성능을 향상시키는 방법을 보여 줍니다. Azure Cache for Redis는 애플리케이션의 데이터에 대한 많은 처리량을 짧은 대기 시간 동안 처리할 수 있도록 하는 보안 데이터 캐시 및 메시징 broker입니다.

필수 조건

이 빠른 시작에는 다음이 필요합니다.

  • 활성 구독이 있는 Azure 계정.

Azure를 구독하고 있지 않다면 시작하기 전에 Azure 체험 계정을 만듭니다. 현재 Azure 무료 계정을 사용하면 Azure Database for MySQL - 유연한 서버를 12개월 동안 무료로 사용해 볼 수 있습니다. 자세한 내용은 Azure 체험 계정을 사용하여 Azure Database for MySQL - 유연한 서버를 무료로 사용해 보세요.

  • 빠른 시작을 사용하여 Azure Database for MySQL 유연한 서버 인스턴스 만들기: Azure Portal을 사용하여 Azure Database for MySQL 인스턴스 만들기
    또는 빠른 시작: Azure CLI가 없는 경우 Azure CLI 를 사용하여 Azure Database for MySQL - 유연한 서버의 인스턴스를 만듭니다.
  • Azure Database for MySQL 유연한 서버 인스턴스의 네트워킹 설정을 구성하여 IP에 액세스할 수 있는지 확인합니다. Azure App Service 또는 Azure Kubernetes Service를 사용하는 경우 Azure Portal에서 Azure 내의 모든 Azure 서비스에서 이 서버에 대한 공용 액세스 허용 설정을 사용하도록 설정합니다.

문제가 있나요? 알려주세요.

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 캐시 만들기

  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가 아닌 포트를 사용하도록 설정할 지 여부를 선택합니다.
    • 프리미엄 캐시의 경우 가용성 영역을 구성하거나 사용하지 않도록 설정할 수 있습니다. 캐시를 만든 후에는 가용성 영역을 비활성화할 수 없습니다. 표준 캐시의 경우 가용성 영역이 자동으로 할당됩니다. 가용성 영역은 기본 SKU에 사용할 수 없습니다.
    • 프리미엄 캐시의 경우 복제본 수, 클러스터링분할된 데이터베이스 수, 시스템 할당 관리 ID데이터 지속성에 대한 설정을 구성합니다.

    다음 이미지는 표준 SKU에 대한 고급 탭을 보여 줍니다.

    표준 SKU 캐시의 고급 창을 보여 주는 스크린샷

    중요합니다

    가능한 경우 관리 ID와 함께 Microsoft Entra ID를 사용하여 캐시에 대한 요청에 권한을 부여합니다. Microsoft Entra ID 및 관리 ID를 사용한 권한 부여는 더 나은 보안을 제공하며 공유 액세스 키 권한 부여보다 사용하기 쉽습니다. 캐시에서 관리 ID를 사용하는 방법에 대한 자세한 내용은 캐시 인증을 위한 Microsoft Entra ID 사용을 참조하세요.

  8. 필요에 따라 태그 탭을 선택하거나 다음: 태그를 선택하고 태그 이름과 값을 입력하여 캐시 리소스를 분류합니다.

  9. 검토 + 만들기를 선택하고 유효성 검사가 통과되면 만들기를 선택합니다.

새 캐시 배포에는 몇 분 정도 걸립니다. 포털 Azure Cache for Redis 페이지에서 배포 진행률을 모니터링할 수 있습니다. 캐시 상태가실행 중으로 표시되면 캐시를 사용할 준비가 된 것입니다.

Python과 함께 Redis 사용

로컬 환경 또는 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()

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 개체 캐시를 설치하고 WordPress 애플리케이션에서 이 플러그 인을 활성화합니다. 이제 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를 구성할 수도 있습니다. 쿼리 모니터 플러그 인을 사용하여 성능 향상을 평가할 수 있습니다. 이 플러그인은 데이터베이스 쿼리를 디버그할 수 있고, 플러그 인별로 그룹화된 총 데이터베이스 쿼리도 표시합니다.

다음 단계