Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
V tomto rychlém startu se dozvíte, jak používat mezipaměť Azure Managed Redis z aplikace Node.js napsané v jazyce TypeScript a ověřit připojení Redis pomocí Microsoft Entra ID.
Požadavky
Předplatné Azure – vytvoření bezplatného předplatného
Instalace Node.js LTS
Instalace TypeScriptu
Přidejte balíčky použité v tomto rychlém startu do projektu:
npm install redis @redis/entraid @redis/clientOvěřování v Azure pro vaše vývojové prostředí pomocí Azure CLI:
az login
Ukázkový kód pro rychlý start v tomto článku je k dispozici na GitHubu.
Vytvoření instance Azure Managed Redis
Nejprve na webu Azure Portal vytvořte mezipaměť Azure Managed Redis.
Při vytváření mezipaměti je ve výchozím nastavení povolené ověřování Microsoft Entra ID, což z něj zajistí zabezpečení od začátku. Pro účely tohoto rychlého startu mezipaměť používá veřejný koncový bod. V produkčním prostředí zvažte použití privátních koncových bodů a dalších síťových ovládacích prvků.
- Pokud chcete vytvořit mezipaměť pomocí portálu, postupujte podle jednoho z těchto postupů:
-
Volitelně můžete mezipaměť vytvořit pomocí Azure CLI, PowerShellu nebo nástroje, který dáváte přednost.
Kód pro připojení k mezipaměti Redis
V první části ukázkového souboru index.tskódu TypeScript nakonfigurujte připojení k mezipaměti:
import { DefaultAzureCredential } from '@azure/identity';
import { EntraIdCredentialsProviderFactory, REDIS_SCOPE_DEFAULT } from '@redis/entraid';
import { createCluster, RedisClusterType, RedisModules, RedisFunctions, RedisScripts } from '@redis/client';
import * as net from 'node:net';
const redisEndpoint = process.env.REDIS_ENDPOINT!;
if (!redisEndpoint) {
console.error('REDIS_ENDPOINT is not set. It should look like: `cache-name.region-name.redis.azure.net:<PORT>`. Find the endpoint in the Azure portal.');
process.exit(1);
}
const [redisHostName, _] = redisEndpoint.split(":");
let client;
function createRedisClient(): RedisClusterType<RedisModules, RedisFunctions, RedisScripts> {
const credential = new DefaultAzureCredential();
const provider = EntraIdCredentialsProviderFactory.createForDefaultAzureCredential({
credential,
scopes: REDIS_SCOPE_DEFAULT,
options: {},
tokenManagerConfig: {
expirationRefreshRatio: 0.8
}
});
const client = createCluster<RedisModules, RedisFunctions, RedisScripts>({
rootNodes: [{ url: `rediss://${redisEndpoint}` }],
defaults: {
credentialsProvider: provider,
socket: {
connectTimeout: 15000,
tls: true,
// This quickstart code uses a fail fast `reconnectStrategy` which
// is suitable only in sample code. The purpose is to quickly
// demonstrate the functionality without getting stuck in
// reconnection loops if your endpoint or authentication is not
// correctly configured. In production code, a more robust
// `reconnectStrategy` should be implemented.
reconnectStrategy: () => new Error('Failure to connect')
}
},
nodeAddressMap(incomingAddress) {
const [hostNameOrIP, port] = incomingAddress.split(":");
const address =
net.isIP(hostNameOrIP) !== 0
? redisHostName
: hostNameOrIP;
return {
host: address,
port: Number(port),
};
}
});
client.on('error', (err) => console.error('Redis cluster error:', err));
return client;
}
createRedisClient() Pomocí funkce vytvořte připojení klienta node-redis k mezipaměti Redis.
client = createRedisClient();
await client.connect();
Kód pro otestování připojení
V další části otestujte připojení pomocí příkazu Redis PING . Server Redis vrátí PONG.
const pingResult = await client.ping();
console.log('Ping result:', pingResult);
Kód nastavil klíč, získat klíč
V této části můžete pomocí SET příkazů GET začít psát a číst data v mezipaměti Redis nejjednodušším způsobem.
const setResult = await client.set("Message", "Hello! The cache is working from Node.js!");
console.log('Set result:', setResult);
const getResult = await client.get("Message");
console.log('Get result:', getResult);
Spuštění kódu
Sestavte a spusťte Node.js aplikaci.
tsc
node index.js
Výsledek vypadá takto:
Ping result: PONG
Set result: OK
Get result: Hello! The cache is working from Node.js!
Tady vidíte tuto ukázku kódu v celém rozsahu.
import { DefaultAzureCredential } from '@azure/identity';
import { EntraIdCredentialsProviderFactory, REDIS_SCOPE_DEFAULT } from '@redis/entraid';
import { createCluster, RedisClusterType, RedisModules, RedisFunctions, RedisScripts } from '@redis/client';
import * as net from 'node:net';
const redisEndpoint = process.env.REDIS_ENDPOINT!;
if (!redisEndpoint) {
console.error('REDIS_ENDPOINT is not set. It should look like: `cache-name.region-name.redis.azure.net:<PORT>`. Find the endpoint in the Azure portal.');
process.exit(1);
}
const [redisHostName, _] = redisEndpoint.split(":");
let client;
function createRedisClient(): RedisClusterType<RedisModules, RedisFunctions, RedisScripts> {
const credential = new DefaultAzureCredential();
const provider = EntraIdCredentialsProviderFactory.createForDefaultAzureCredential({
credential,
scopes: REDIS_SCOPE_DEFAULT,
options: {},
tokenManagerConfig: {
expirationRefreshRatio: 0.8
}
});
const client = createCluster<RedisModules, RedisFunctions, RedisScripts>({
rootNodes: [{ url: `rediss://${redisEndpoint}` }],
defaults: {
credentialsProvider: provider,
socket: {
connectTimeout: 15000,
tls: true,
// This quickstart code uses a fail fast `reconnectStrategy` which
// is suitable only in sample code. The purpose is to quickly
// demonstrate the functionality without getting stuck in
// reconnection loops if your endpoint or authentication is not
// correctly configured. In production code, a more robust
// `reconnectStrategy` should be implemented.
reconnectStrategy: () => new Error('Failure to connect')
}
},
nodeAddressMap(incomingAddress) {
const [hostNameOrIP, port] = incomingAddress.split(":");
const address =
net.isIP(hostNameOrIP) !== 0
? redisHostName
: hostNameOrIP;
return {
host: address,
port: Number(port),
};
}
});
client.on('error', (err) => console.error('Redis cluster error:', err));
return client;
}
try {
client = createRedisClient();
await client.connect();
const pingResult = await client.ping();
console.log('Ping result:', pingResult);
const setResult = await client.set("Message", "Hello! The cache is working from Node.js!");
console.log('Set result:', setResult);
const getResult = await client.get("Message");
console.log('Get result:', getResult);
} catch (err) {
console.error('Error:', err);
} finally {
if (client) {
try {
await client.quit();
} catch (quitErr) {
console.error('Error occurred while quitting Redis client:', quitErr);
}
}
}
Vyčistěte zdroje
Pokud chcete dál používat prostředky, které jste vytvořili v tomto článku, ponechte skupinu prostředků.
Jinak pokud jste s prostředky hotovi, můžete odstranit skupinu prostředků Azure, kterou jste vytvořili, abyste se vyhnuli poplatkům.
Důležité
Odstranění skupiny prostředků je nevratné. Při odstranění skupiny prostředků se všechny prostředky, které obsahuje, trvale odstraní. Ujistěte se, že nechtěně neodstraníte nesprávnou skupinu prostředků nebo jednotlivé prostředky. Pokud jste prostředky vytvořili v existující skupině prostředků, která obsahuje prostředky, které chcete zachovat, můžete každý prostředek odstranit jednotlivě místo odstranění skupiny prostředků.
Odstranit skupinu prostředků
Přihlaste se k portálu Azure Portal a potom vyberte Skupiny prostředků.
Vyberte skupinu prostředků, kterou chcete odstranit.
Pokud existuje mnoho skupin prostředků, použijte filtr pro jakékoli pole... zadejte název skupiny prostředků, kterou jste vytvořili pro tento článek. V seznamu výsledků vyberte skupinu prostředků.
Vyberte odstranit skupinu zdrojů.
Zobrazí se výzva k potvrzení odstranění skupiny prostředků. Zadejte název vaší skupiny prostředků pro potvrzení a poté vyberte Odstranit.
Po chvíli se skupina prostředků včetně všech prostředků, které obsahuje, odstraní.