Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
I den här snabbstarten lär du dig hur du använder en Azure Managed Redis-cache från ett Node.js-program som skrivits på TypeScript-språket och autentiserar Redis-anslutningen med hjälp av Microsoft Entra-ID.
Förutsättningar
- Azure-prenumeration – skapa en kostnadsfritt 
- Installera Node.js LTS 
- Installera TypeScript 
- Lägg till paketen som används i den här snabbstarten i projektet: - npm install redis @redis/entraid @redis/client
- Autentisera till Azure för din utvecklingsmiljö med Azure CLI: - az login
Snabbstartsexempelkoden i den här artikeln är tillgänglig på GitHub.
Skapa en Azure Managed Redis-instans
Skapa först en Azure Managed Redis-cache i Azure-portalen.
När du skapar cachen aktiveras Microsoft Entra-ID-autentisering som standard, vilket gör det säkert från början. För den här snabbstarten använder cacheminnet en offentlig slutpunkt. Överväg att använda privata slutpunkter och andra nätverkskontroller i produktion.
- Om du vill skapa en cache med portalen följer du någon av följande procedurer:
- 
Du kan också skapa en cache med hjälp av Azure CLI, PowerShell eller vilket verktyg du vill. 
Kod för att ansluta till en Redis-cache
I den första delen av TypeScript-kodexemplefilen index.tskonfigurerar du anslutningen till cachen:
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() Använd funktionen för att skapa en nod-redis-klientanslutning till Redis-cachen..
client = createRedisClient();
await client.connect();
Kod för att testa en anslutning
I nästa avsnitt testar du anslutningen med kommandot Redis PING . Redis-servern returnerar PONG.
const pingResult = await client.ping();
console.log('Ping result:', pingResult);
Koduppsättning en nyckel, hämta en nyckel
I det här avsnittet använder SET du kommandona och GET för att börja skriva och läsa data i Redis-cachen på det enklaste sättet.
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);
Kör koden
Skapa och kör Node.js-programmet.
tsc
node index.js
Resultatet ser ut så här:
Ping result: PONG
Set result: OK
Get result: Hello! The cache is working from Node.js!
Här kan du se det här kodexemplet i sin helhet.
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);
        }
    }
}
Rensa resurser
Om du vill fortsätta att använda de resurser som du skapade i den här artikeln behåller du resursgruppen.
Om du är klar med resurserna kan du ta bort den Azure-resursgrupp som du skapade för att undvika avgifter.
Viktigt!
Att ta bort en resursgrupp kan inte ångras. När du tar bort en resursgrupp tas alla resurser som ingår i den bort permanent. Kontrollera att du inte av misstag tar bort fel resursgrupp eller resurser. Om du har skapat resurserna i en befintlig resursgrupp som innehåller resurser som du vill behålla kan du ta bort varje resurs individuellt i stället för att ta bort resursgruppen.
Ta bort en resursgrupp
- Logga in på Azure-portalen och välj Resursgrupper. 
- Välj den resursgrupp som du vill ta bort. - Om det finns många resursgrupper använder du rutan Filter för alla fält... och skriver namnet på resursgruppen som du skapade för den här artikeln. Välj resursgruppen i resultatlistan.   
- Välj Ta bort resursgrupp. 
- Du blir ombedd att bekräfta borttagningen av resursgruppen. Skriv namnet på din resursgrupp för att bekräfta och välj sedan Ta bort.   
Efter en liten stund tas resursgruppen och de resurser som finns i den bort.