이 빠른 시작에서는 Azure Managed Redis 또는 Azure Cache for Redis를 Node.js 앱에 통합합니다. 앱은 Azure 내의 모든 애플리케이션에서 액세스할 수 있는 안전한 전용 캐시에 액세스할 수 있습니다.
필수 조건
- Azure 구독 - 체험 구독 만들기
- Node.js 설치됨 - Node.js 설치하려면 Windows 컴퓨터에 Node 및 npm을 설치하는 방법에 대한 지침은 Windows에 Node.js 설치를 참조하세요.
Azure Managed Redis 인스턴스 만들기
Azure Managed Redis 인스턴스를 만들려면 Azure Portal에 로그인하고 리소스 만들기를 선택합니다.
새 페이지의 검색 상자에 Azure Cache for Redis를 입력합니다.
새 Redis Cache 탭에서 기본 사항에서 새 캐시에 대한 설정을 구성합니다.
설정 값 선택 설명 구독 드롭다운하여 구독을 선택합니다. 이 새 Azure Managed Redis 인스턴스를 만들 구독입니다. 리소스 그룹 드롭다운하여 리소스 그룹을 선택하거나, 새로 만들기를 선택하고 새 리소스 그룹 이름을 입력합니다. 캐시 및 기타 리소스를 만들 새 리소스 그룹의 이름입니다. 모든 앱 리소스를 하나의 리소스 그룹에 배치하면 앱 리소스를 쉽게 관리하거나 삭제할 수 있습니다. 이름 지역에서 고유한 이름을 입력합니다. 캐시 이름은 숫자, 문자 또는 하이픈만 포함하는 캐시의 지역 이름이 결합된 경우 1~63자의 문자열이어야 합니다. (캐시 이름이 45자 미만인 경우 현재 사용 가능한 모든 지역에서 작동해야 합니다.) 이름은 숫자 또는 문자로 시작하고 끝나야 하며 연속 하이픈을 포함할 수 없습니다. 캐시 인스턴스의 호스트 이름은 \<DNS name\>.\<Azure region\>.redis.azure.net
입니다.지역 드롭다운하여 위치를 선택합니다. Azure Managed Redis는 선택한 Azure 지역에서 사용할 수 있습니다. 데이터 계층 고성능을 위해 메모리 내 를 선택하거나 성능이 낮은 캐시의 경우 Flash 를 선택합니다. 메모리 내 계층에는 Balanced, Memory Optimized 및 Compute Optimized가 포함됩니다. 플래시 계층을 사용하여 메모리 내(RAM) 및 SSD(디스크 내) 데이터 스토리지를 사용합니다. 캐시 크기 드롭다운하고 크기를 선택합니다. 캐시 크기는 계층에 따라 달라집니다. 가장 작은 크기는 균형 잡힌 계층입니다. 가장 큰 메모리 내 계층 크기는 메모리 최적화 계층입니다. 성능 드롭다운하고 성능 기본 설정을 선택합니다. 성능은 vCPU 수에 따라 달라집니다. vCPU 수는 계층에 따라 다릅니다. 컴퓨팅 최적화에는 vCPU가 가장 많이 있습니다. 올바른 성능 계층을 선택하는 방법에 대한 지침은 올바른 계층 선택을 참조하세요.
중요합니다
120GB 이상의 스토리지를 사용하는 모든 메모리 내 계층은 메모리 최적화 M150 이상을 포함하여 공개 미리 보기로 제공됩니다. 균형 잡힌 B150 이상; 및 컴퓨팅 최적화 X150 이상. 이러한 모든 계층 이상은 공개 미리 보기에 있습니다.
모든 플래시 최적화 계층은 공개 미리 보기로 제공됩니다.
다음: 네트워킹을 선택하고 퍼블릭 엔드포인트 또는 프라이빗 엔드포인트를 선택합니다.
다음: 활성 지역 복제를 선택합니다. 활성 지역 복제를 사용하려면 프로비전 중에 사용하도록 설정해야 합니다. 활성 지역 복제가 없는 캐시는 나중에 활성 지역 복제 그룹에 추가하거나 조인할 수 없습니다. 자세한 내용은 Azure Managed Redis 인스턴스에 대한 활성 지역 복제 구성을 참조 하세요.
다음: 고급 탭을 선택합니다.
인스턴스에 추가하려는 모든 Redis 모듈 을 구성합니다.
기본적으로 새 관리 캐시의 경우:
- Microsoft Entra ID를 사용할 수 있습니다.
- 보안상의 이유로 액세스 키 인증 을 사용할 수 없습니다.
중요합니다
최적의 보안을 위해 관리 ID와 함께 Microsoft Entra ID를 사용하여 가능한 경우 캐시에 대한 요청에 권한을 부여하는 것이 좋습니다. Microsoft Entra ID 및 관리 ID를 사용하여 권한 부여는 공유 액세스 키 권한 부여를 통해 뛰어난 보안 및 사용 편의성을 제공합니다. 캐시에서 관리 ID를 사용하는 방법에 대한 자세한 내용은 Microsoft Entra ID를 사용한 캐시 인증에 대해 설명합니다.
클러스터링 정책 설정:
- RedisSearch 또는 기타 모듈을 사용하려면 Enterprise 사용
- 클러스터형 캐시에 OSS 를 사용합니다.
- 비클러스터형 캐시에는 비클러스터형 (미리 보기)을 사용하십시오.
클러스터링 정책 선택에 대한 자세한 내용은 클러스터 정책을 참조하세요.
중요합니다
Azure Managed Redis 인스턴스를 만든 후에는 클러스터링 정책을 변경할 수 없습니다. RediSearch를 사용 중인 경우 Enterprise 클러스터 정책이 필요하며
NoEviction
이 유일한 제거 정책으로써 지원됩니다.중요합니다
지역에서 복제 그룹에서 이 캐시 인스턴스를 사용하는 경우 인스턴스를 만든 후에는 제거 정책을 변경할 수 없습니다. 캐시를 만들기 전에 주 노드의 제거 정책을 알고 있어야 합니다. 활성 지역 복제에 대한 자세한 내용은 활성 지역 복제 필수 구성 요소를 참조하세요.
중요합니다
캐시 인스턴스를 만든 후에는 모듈을 변경할 수 없습니다. Azure Cache for Redis 인스턴스를 만들 때 모듈을 사용하도록 설정해야 합니다. 캐시를 만든 후에는 모듈 구성을 사용하도록 설정할 수 있는 옵션이 없습니다.
다음: 태그를 선택하고 건너뜁니다.
“다음: 검토 + 만들기”를 선택합니다.
설정을 검토하고 생성를 선택합니다.
Redis 인스턴스를 만드는 데 몇 분 정도 걸립니다. Azure Managed Redis 개요 페이지에서 진행률을 모니터링할 수 있습니다. 상태가 실행 중으로 표시되면 캐시를 사용할 준비가 된 것입니다.
Azure Cache for Redis 인스턴스 만들기
Azure Portal에서 Azure Cache for Redis를 검색하고 선택합니다.
Azure Cache for Redis 페이지에서Azure Cache for Redis>를 선택합니다.
새 Redis Cache 페이지의 기본 사항 탭에서 다음 설정을 구성합니다.
- 구독: 사용할 구독을 선택합니다.
- 리소스 그룹: 리소스 그룹을 선택하거나 새로 만들기 를 선택하고 새 리소스 그룹 이름을 입력합니다. 모든 앱 리소스를 동일한 리소스 그룹에 배치하면 쉽게 함께 관리하거나 삭제할 수 있습니다.
-
이름: 지역에서 고유한 캐시 이름을 입력합니다. 이름은 다음 조건을 만족해야 합니다.
- 1~63자의 문자열이어야 합니다.
- 숫자, 문자 및 하이픈만 포함합니다.
- 숫자 또는 문자로 시작하고 끝납니다.
- 연속된 하이픈을 포함할 수 없습니다.
- 지역: 캐시를 사용하는 다른 서비스 근처의 Azure 지역을 선택합니다.
- 캐시 SKU: SKU 를 선택하여 캐시에 사용 가능한 크기, 성능 및 기능을 결정합니다.
- 캐시 크기: 캐시 크기를 선택합니다. 자세한 내용은 Azure Cache for Redis 개요를 참조하세요.
네트워킹 탭을 선택하거나 다음: 네트워킹을 선택합니다.
네트워킹 탭에서 캐시에 사용할 연결 방법을 선택합니다. 프라이빗 엔드포인트 는 보안을 위해 권장됩니다. 프라이빗 엔드포인트를 선택한 후, 프라이빗 엔드포인트 추가를 선택하고 프라이빗 엔드포인트를 만듭니다.
고급 탭을 선택하거나 다음: 고급을 선택합니다.
고급 창에서 다음 옵션을 구성합니다.
- Microsoft Entra 인증 또는 액세스 키 인증을 선택합니다. Microsoft Entra 인증 은 기본적으로 사용하도록 설정되어 있습니다.
- TLS가 아닌 포트를 사용하도록 설정할 지 여부를 선택합니다.
- 프리미엄 캐시의 경우 가용성 영역을 구성하거나 사용하지 않도록 설정할 수 있습니다. 캐시를 만든 후에는 가용성 영역을 비활성화할 수 없습니다. 표준 캐시의 경우 가용성 영역이 자동으로 할당됩니다. 가용성 영역은 기본 SKU에 사용할 수 없습니다.
- 프리미엄 캐시의 경우 복제본 수, 클러스터링 및 분할된 데이터베이스 수, 시스템 할당 관리 ID 및 데이터 지속성에 대한 설정을 구성합니다.
다음 이미지는 표준 SKU에 대한 고급 탭을 보여 줍니다.
중요합니다
가능한 경우 관리 ID와 함께 Microsoft Entra ID를 사용하여 캐시에 대한 요청에 권한을 부여합니다. Microsoft Entra ID 및 관리 ID를 사용한 권한 부여는 더 나은 보안을 제공하며 공유 액세스 키 권한 부여보다 사용하기 쉽습니다. 캐시에서 관리 ID를 사용하는 방법에 대한 자세한 내용은 Microsoft Entra ID를 사용한 캐시 인증에 대해 설명합니다.
필요에 따라 태그 탭을 선택하거나 다음: 태그를 선택하고 태그 이름과 값을 입력하여 캐시 리소스를 분류합니다.
검토 + 만들기를 선택하고 유효성 검사가 통과되면 만들기를 선택합니다.
새 캐시 배포에는 몇 분 정도 걸립니다. 포털 Azure Cache for Redis 페이지에서 배포 진행률을 모니터링할 수 있습니다. 캐시 상태가실행 중으로 표시되면 캐시를 사용할 준비가 된 것입니다.
node-redis 클라이언트 라이브러리 설치
node-redis 라이브러리는 Redis의 기본 Node.js 클라이언트입니다. 다음 명령을 사용하여 npm으로 클라이언트를 설치할 수 있습니다.
npm install redis
캐시에 액세스하기 위한 Node.js 앱 만들기
Microsoft Entra ID 또는 액세스 키를 사용하여 Azure Managed Redis 인스턴스에 연결하는 Node.js 앱을 만듭니다. Microsoft Entra ID 사용을 권장합니다.
캐시에서 Microsoft Entra ID 인증 사용
Azure Managed Redis 캐시에는 기본적으로 Microsoft Entra Authentication이 사용하도록 설정되어 있습니다.
Azure Portal에서 Microsoft Entra 토큰 기반 인증을 사용하려는 캐시를 선택합니다.
리소스 메뉴에서 인증을 선택합니다.
멤버 선택을 선택하고 유효한 사용자의 이름을 입력합니다. 입력한 사용자에게는 저장을 선택하면 기본적으로 데이터 소유자 액세스 정책이 자동으로 할당됩니다. 관리 ID 또는 서비스 주체를 입력하여 캐시 인스턴스에 연결할 수도 있습니다.
Azure CLI에서 Microsoft Entra ID를 사용하는 방법에 대한 자세한 내용은 ID에 대한 참조 페이지를 참조하세요.
JavaScript Azure ID 클라이언트 라이브러리 설치
MSAL(Microsoft 인증 라이브러리)을 통해 Microsoft ID에서 보안 토큰을 획득하여 사용자를 인증할 수 있습니다. MSAL을 사용하여 토큰 인증 지원을 제공하는 JavaScript Azure ID 클라이언트 라이브러리를 사용할 수 있습니다.
npm
를 사용하여 이 라이브러리를 설치합니다.
npm install @azure/identity
Microsoft Entra ID를 사용하여 새 Node.js 앱 만들기
호스트 이름 및 Microsoft Entra ID 서비스 주체 또는 사용자의 개체 ID인 서비스 주체 ID에 대한 환경 변수를 추가합니다. Azure Portal에서 사용자 이름을 찾 습니다.
set AZURE_MANAGED_REDIS_HOST_NAME=contosoCache set REDIS_SERVICE_PRINCIPAL_ID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
redistest.js라는 새 스크립트 파일을 만듭니다.
다음 예제 JavaScript를 파일에 추가합니다. 이 코드에서는 캐시 호스트 이름 및 키 환경 변수를 사용하여 Azure Managed Redis 인스턴스에 연결하는 방법을 보여 줍니다. 코드는 또한 캐시에 문자열 값을 저장하고 검색합니다. 또한
PING
및CLIENT LIST
명령을 실행했습니다. node-redis 클라이언트와 함께 Redis를 사용하는 추가 예시는 https://redis.js.org/를 참조하세요.const { createClient } = require("redis"); const { DefaultAzureCredential } = require("@azure/identity"); async function main() { // Construct a Token Credential from Identity library, e.g. ClientSecretCredential / ClientCertificateCredential / ManagedIdentityCredential, etc. const credential = new DefaultAzureCredential(); const redisScope = "https://redis.azure.com/.default"; // Fetch a Microsoft Entra token to be used for authentication. This token will be used as the password. let accessToken = await credential.getToken(redisScope); console.log("access Token", accessToken); // Create redis client and connect to the Azure Cache for Redis over the TLS port using the access token as password. const cacheConnection = createClient({ username: process.env.REDIS_SERVICE_PRINCIPAL_ID, password: accessToken.token, url: `redis://${process.env.AZURE_MANAGED_REDIS_HOST_NAME}:10000`, pingInterval: 100000, socket: { tls: true, keepAlive: 0 }, }); cacheConnection.on("error", (err) => console.log("Redis Client Error", err)); await cacheConnection.connect(); // PING command console.log("\nCache command: PING"); console.log("Cache response : " + await cacheConnection.ping()); // SET console.log("\nCache command: SET Message"); console.log("Cache response : " + await cacheConnection.set("Message", "Hello! The cache is working from Node.js!")); // GET console.log("\nCache command: GET Message"); console.log("Cache response : " + await cacheConnection.get("Message")); // Client list, useful to see if connection list is growing... console.log("\nCache command: CLIENT LIST"); console.log("Cache response : " + await cacheConnection.sendCommand(["CLIENT", "LIST"])); cacheConnection.disconnect(); return "Done" } main().then((result) => console.log(result)).catch(ex => console.log(ex));
Node.js를 사용하여 스크립트를 실행합니다.
node redistest.js
코드의 출력은 다음과 같습니다.
Cache command: PING Cache response : PONG Cache command: GET Message Cache response : Hello! The cache is working from Node.js! Cache command: SET Message Cache response : OK Cache command: GET Message Cache response : Hello! The cache is working from Node.js! Cache command: CLIENT LIST Cache response : id=10017364 addr=76.22.73.183:59380 fd=221 name= age=1 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=32742 argv-mem=10 obl=0 oll=0 omem=0 tot-mem=61466 ow=0 owmem=0 events=r cmd=client user=default numops=6 Done
재인증을 통해 샘플 JavaScript 앱 만들기
Microsoft Entra ID 액세스 토큰의 수명은 평균 75분으로 제한되어 있습니다. 캐시에 대한 연결을 유지하려면 토큰을 새로 고쳐야 합니다. 이 예에서는 JavaScript를 사용하여 이를 수행하는 방법을 보여 줍니다.
redistestreauth.js라는 새 스크립트 파일을 만듭니다.
다음 예제 JavaScript를 파일에 추가합니다.
const { createClient } = require("redis"); const { DefaultAzureCredential } = require("@azure/identity"); async function returnPassword(credential) { const redisScope = "https://redis.azure.com/.default"; // Fetch a Microsoft Entra token to be used for authentication. This token will be used as the password. return credential.getToken(redisScope); } async function main() { // Construct a Token Credential from Identity library, e.g. ClientSecretCredential / ClientCertificateCredential / ManagedIdentityCredential, etc. const credential = new DefaultAzureCredential(); let accessToken = await returnPassword(credential); // Create redis client and connect to the Azure Cache for Redis over the TLS port using the access token as password. let cacheConnection = createClient({ username: process.env.REDIS_SERVICE_PRINCIPAL_ID, password: accessToken.token, url: `redis://${process.env.AZURE_MANAGED_REDIS_HOST_NAME}:10000`, pingInterval: 100000, socket: { tls: true, keepAlive: 0 }, }); cacheConnection.on("error", (err) => console.log("Redis Client Error", err)); await cacheConnection.connect(); for (let i = 0; i < 3; i++) { try { // PING command console.log("\nCache command: PING"); console.log("Cache response : " + await cacheConnection.ping()); // SET console.log("\nCache command: SET Message"); console.log("Cache response : " + await cacheConnection.set("Message", "Hello! The cache is working from Node.js!")); // GET console.log("\nCache command: GET Message"); console.log("Cache response : " + await cacheConnection.get("Message")); // Client list, useful to see if connection list is growing... console.log("\nCache command: CLIENT LIST"); console.log("Cache response : " + await cacheConnection.sendCommand(["CLIENT", "LIST"])); break; } catch (e) { console.log("error during redis get", e.toString()); if ((accessToken.expiresOnTimestamp <= Date.now())|| (redis.status === "end" || "close") ) { await redis.disconnect(); accessToken = await returnPassword(credential); cacheConnection = createClient({ username: process.env.REDIS_SERVICE_PRINCIPAL_ID, password: accessToken.token, url: `redis://${process.env.AZURE_MANAGED_REDIS_HOST_NAME}:10000`, pingInterval: 100000, socket: { tls: true, keepAlive: 0 }, }); } } } } main().then((result) => console.log(result)).catch(ex => console.log(ex));
Node.js를 사용하여 스크립트를 실행합니다.
node redistestreauth.js
코드의 출력은 다음과 같습니다.
Cache command: PING Cache response : PONG Cache command: GET Message Cache response : Hello! The cache is working from Node.js! Cache command: SET Message Cache response : OK Cache command: GET Message Cache response : Hello! The cache is working from Node.js! Cache command: CLIENT LIST Cache response : id=10017364 addr=76.22.73.183:59380 fd=221 name= age=1 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=32742 argv-mem=10 obl=0 oll=0 omem=0 tot-mem=61466 ow=0 owmem=0 events=r cmd=client user=default numops=6
비고
node-redis 라이브러리를 사용하여 Redis에 인증하기 위해 Microsoft Entra ID를 사용하는 추가 예시는 이 GitHub 리포지토리를 참조하세요.
캐시에 액세스하기 위한 Node.js 앱 만들기
Microsoft Entra ID 또는 액세스 키를 사용하여 Azure Cache for Redis에 연결하는 Node.js 앱을 만듭니다. Microsoft Entra ID 사용을 권장합니다.
캐시에서 Microsoft Entra ID 인증 사용
Azure Managed Redis 캐시에는 기본적으로 Microsoft Entra Authentication이 사용하도록 설정되어 있습니다.
Azure Portal에서 Microsoft Entra 토큰 기반 인증을 사용하려는 캐시를 선택합니다.
리소스 메뉴에서 인증을 선택합니다.
멤버 선택을 선택하고 유효한 사용자의 이름을 입력합니다. 입력한 사용자에게는 저장을 선택하면 기본적으로 데이터 소유자 액세스 정책이 자동으로 할당됩니다. 관리 ID 또는 서비스 주체를 입력하여 캐시 인스턴스에 연결할 수도 있습니다.
Azure CLI에서 Microsoft Entra ID를 사용하는 방법에 대한 자세한 내용은 ID에 대한 참조 페이지를 참조하세요.
JavaScript Azure ID 클라이언트 라이브러리 설치
MSAL(Microsoft 인증 라이브러리)을 통해 Microsoft ID에서 보안 토큰을 획득하여 사용자를 인증할 수 있습니다. MSAL을 사용하여 토큰 인증 지원을 제공하는 JavaScript Azure ID 클라이언트 라이브러리를 사용할 수 있습니다.
npm
를 사용하여 이 라이브러리를 설치합니다.
npm install @azure/identity
Microsoft Entra ID를 사용하여 새 Node.js 앱 만들기
호스트 이름 및 Microsoft Entra ID 서비스 주체 또는 사용자의 개체 ID인 서비스 주체 ID에 대한 환경 변수를 추가합니다. Azure Portal에서 사용자 이름을 찾 습니다.
set AZURE_CACHE_FOR_REDIS_HOST_NAME=contosoCache set REDIS_SERVICE_PRINCIPAL_ID=XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
redistest.js라는 새 스크립트 파일을 만듭니다.
다음 예제 JavaScript를 파일에 추가합니다. 이 코드는 캐시 호스트 이름 및 키 환경 변수를 사용하여 Azure Cache for Redis 인스턴스에 연결하는 방법을 보여 줍니다. 코드는 또한 캐시에 문자열 값을 저장하고 검색합니다. 또한
PING
및CLIENT LIST
명령을 실행했습니다. node-redis 클라이언트와 함께 Redis를 사용하는 추가 예시는 https://redis.js.org/를 참조하세요.const { createClient } = require("redis"); const { DefaultAzureCredential } = require("@azure/identity"); async function main() { // Construct a Token Credential from Identity library, e.g. ClientSecretCredential / ClientCertificateCredential / ManagedIdentityCredential, etc. const credential = new DefaultAzureCredential(); const redisScope = "https://redis.azure.com/.default"; // Fetch a Microsoft Entra token to be used for authentication. This token will be used as the password. let accessToken = await credential.getToken(redisScope); console.log("access Token", accessToken); // Create redis client and connect to the Azure Cache for Redis over the TLS port using the access token as password. const cacheConnection = createClient({ username: process.env.REDIS_SERVICE_PRINCIPAL_ID, password: accessToken.token, url: `redis://${process.env.AZURE_CACHE_FOR_REDIS_HOST_NAME}:6380`, pingInterval: 100000, socket: { tls: true, keepAlive: 0 }, }); cacheConnection.on("error", (err) => console.log("Redis Client Error", err)); await cacheConnection.connect(); // PING command console.log("\nCache command: PING"); console.log("Cache response : " + await cacheConnection.ping()); // SET console.log("\nCache command: SET Message"); console.log("Cache response : " + await cacheConnection.set("Message", "Hello! The cache is working from Node.js!")); // GET console.log("\nCache command: GET Message"); console.log("Cache response : " + await cacheConnection.get("Message")); // Client list, useful to see if connection list is growing... console.log("\nCache command: CLIENT LIST"); console.log("Cache response : " + await cacheConnection.sendCommand(["CLIENT", "LIST"])); cacheConnection.disconnect(); return "Done" } main().then((result) => console.log(result)).catch(ex => console.log(ex));
Node.js를 사용하여 스크립트를 실행합니다.
node redistest.js
코드의 출력은 다음과 같습니다.
Cache command: PING Cache response : PONG Cache command: GET Message Cache response : Hello! The cache is working from Node.js! Cache command: SET Message Cache response : OK Cache command: GET Message Cache response : Hello! The cache is working from Node.js! Cache command: CLIENT LIST Cache response : id=10017364 addr=76.22.73.183:59380 fd=221 name= age=1 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=32742 argv-mem=10 obl=0 oll=0 omem=0 tot-mem=61466 ow=0 owmem=0 events=r cmd=client user=default numops=6 Done
재인증을 통해 샘플 JavaScript 앱 만들기
Microsoft Entra ID 액세스 토큰의 수명은 평균 75분으로 제한되어 있습니다. 캐시에 대한 연결을 유지하려면 토큰을 새로 고쳐야 합니다. 이 예에서는 JavaScript를 사용하여 이를 수행하는 방법을 보여 줍니다.
redistestreauth.js라는 새 스크립트 파일을 만듭니다.
다음 예제 JavaScript를 파일에 추가합니다.
const { createClient } = require("redis"); const { DefaultAzureCredential } = require("@azure/identity"); async function returnPassword(credential) { const redisScope = "https://redis.azure.com/.default"; // Fetch a Microsoft Entra token to be used for authentication. This token will be used as the password. return credential.getToken(redisScope); } async function main() { // Construct a Token Credential from Identity library, e.g. ClientSecretCredential / ClientCertificateCredential / ManagedIdentityCredential, etc. const credential = new DefaultAzureCredential(); let accessToken = await returnPassword(credential); // Create redis client and connect to the Azure Cache for Redis over the TLS port using the access token as password. let cacheConnection = createClient({ username: process.env.REDIS_SERVICE_PRINCIPAL_ID, password: accessToken.token, url: `redis://${process.env.AZURE_CACHE_FOR_REDIS_HOST_NAME}:6380`, pingInterval: 100000, socket: { tls: true, keepAlive: 0 }, }); cacheConnection.on("error", (err) => console.log("Redis Client Error", err)); await cacheConnection.connect(); for (let i = 0; i < 3; i++) { try { // PING command console.log("\nCache command: PING"); console.log("Cache response : " + await cacheConnection.ping()); // SET console.log("\nCache command: SET Message"); console.log("Cache response : " + await cacheConnection.set("Message", "Hello! The cache is working from Node.js!")); // GET console.log("\nCache command: GET Message"); console.log("Cache response : " + await cacheConnection.get("Message")); // Client list, useful to see if connection list is growing... console.log("\nCache command: CLIENT LIST"); console.log("Cache response : " + await cacheConnection.sendCommand(["CLIENT", "LIST"])); break; } catch (e) { console.log("error during redis get", e.toString()); if ((accessToken.expiresOnTimestamp <= Date.now())|| (redis.status === "end" || "close") ) { await redis.disconnect(); accessToken = await returnPassword(credential); cacheConnection = createClient({ username: process.env.REDIS_SERVICE_PRINCIPAL_ID, password: accessToken.token, url: `redis://${process.env.AZURE_CACHE_FOR_REDIS_HOST_NAME}:6380`, pingInterval: 100000, socket: { tls: true, keepAlive: 0 }, }); } } } } main().then((result) => console.log(result)).catch(ex => console.log(ex));
Node.js를 사용하여 스크립트를 실행합니다.
node redistestreauth.js
코드의 출력은 다음과 같습니다.
Cache command: PING Cache response : PONG Cache command: GET Message Cache response : Hello! The cache is working from Node.js! Cache command: SET Message Cache response : OK Cache command: GET Message Cache response : Hello! The cache is working from Node.js! Cache command: CLIENT LIST Cache response : id=10017364 addr=76.22.73.183:59380 fd=221 name= age=1 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=32742 argv-mem=10 obl=0 oll=0 omem=0 tot-mem=61466 ow=0 owmem=0 events=r cmd=client user=default numops=6
비고
node-redis 라이브러리를 사용하여 Redis에 인증하기 위해 Microsoft Entra ID를 사용하는 추가 예시는 이 GitHub 리포지토리를 참조하세요.
자원을 정리하세요
이 문서에서 만든 리소스를 계속 사용하려면 리소스 그룹을 유지합니다.
그렇지 않고 리소스 사용을 완료하는 경우 요금이 부과되지 않도록 하려면 만든 Azure 리소스 그룹을 삭제하면 됩니다.
중요합니다
리소스 그룹을 삭제하면 다시 되돌릴 수 없습니다. 리소스 그룹을 삭제하는 경우 그 안의 모든 리소스가 영구적으로 삭제됩니다. 잘못된 리소스 그룹 또는 리소스를 자동으로 삭제하지 않도록 해야 합니다. 유지하려는 리소스가 포함된 기존 리소스 그룹 내에서 리소스를 만든 경우 리소스 그룹을 삭제하는 대신 각 리소스를 개별적으로 삭제할 수 있습니다.
리소스 그룹을 삭제하려면
Azure Portal에 로그인한 다음, 리소스 그룹을 선택합니다.
삭제하려는 리소스 그룹을 선택합니다.
리소스 그룹이 많은 경우 필드 필터링... 상자를 사용하여 이 문서에 대해 만든 리소스 그룹의 이름을 입력합니다. 결과 목록에서 리소스 그룹을 선택합니다.
리소스 그룹 삭제를 선택합니다.
리소스 그룹 삭제를 확인하는 메시지가 표시됩니다. 리소스 그룹의 이름을 입력하여 확인한 다음, 삭제를 선택합니다.
잠시 후, 리소스 그룹 및 모든 해당 리소스가 삭제됩니다.
샘플 코드 가져오기
GitHub에서 Node.js 빠른 시작을 가져옵니다.
관련 콘텐츠
이 빠른 시작에서는 Node.js 애플리케이션에서 Azure Managed Redis 또는 Azure Cache for Redis를 사용하는 방법을 알아보았습니다. Azure Redis 제품에 대해 자세히 알아보세요.