Rövid útmutató: Az Azure Cache for Redis használata .NET Core-alkalmazással
Ebben a rövid útmutatóban az Azure Cache for Redist egy .NET Core-alkalmazásba építi be egy biztonságos, dedikált gyorsítótárhoz való hozzáféréshez, amely az Azure bármely alkalmazásából elérhető. A StackExchange.Redis-ügyfelet kifejezetten C# kóddal használja egy .NET Core-konzolalkalmazásban.
Ugrás a kódra
Ez a cikk azt ismerteti, hogyan módosíthatja egy mintaalkalmazás kódját egy működő alkalmazás létrehozásához, amely csatlakozik az Azure Cache for Redishez.
Ha közvetlenül a mintakódra szeretne lépni, tekintse meg a GitHubon található .NET Core gyorsútmutató-mintát .
Előfeltételek
- Azure-előfizetés. Hozzon létre egyet ingyen
- .NET Core SDK
Gyorsítótár létrehozása
Gyorsítótár létrehozásához jelentkezzen be az Azure Portalra. A portál menüjében válassza az Erőforrás létrehozása lehetőséget.
Az Első lépések panelen írja be az Azure Cache for Redist a keresősávba. A keresési eredmények között keresse meg az Azure Cache for Redist, majd válassza a Létrehozás lehetőséget.
Az Új Redis Cache panel Alapszintű beállítások lapján konfigurálja a következő beállításokat a gyorsítótárhoz:
Beállítás Művelet Leírás Előfizetés Válassza ki az Azure-előfizetését. Az Azure Cache for Redis új példányának létrehozásához használandó előfizetés. Erőforráscsoport Jelöljön ki egy erőforráscsoportot, vagy válassza az Új létrehozása lehetőséget, és adjon meg egy új erőforráscsoportnevet. Annak az erőforráscsoportnak a neve, amelyben létre szeretné hozni a gyorsítótárat és más erőforrásokat. Ha az összes alkalmazás-erőforrást egy erőforráscsoportba helyezi, egyszerűen kezelheti vagy törölheti őket. DNS-név Adjon meg egy egyedi nevet. A gyorsítótár nevének 1–63 karakterből álló sztringnek kell lennie, amely csak számokat, betűket és kötőjeleket tartalmaz. A névnek számmal vagy betűvel kell kezdődnie és végződnie, és nem tartalmazhat egymást követő kötőjeleket. A gyorsítótárpéldány gazdagépneve . \<DNS name>.redis.cache.windows.net
Helyen Válasszon ki egy helyet. Olyan Azure-régió , amely a gyorsítótárat használó egyéb szolgáltatások közelében található. Gyorsítótár termékváltozata Válasszon egy termékváltozatot. Az termékváltozat határozza meg a gyorsítótár számára elérhető méretet, teljesítményt és funkcióparamétereket. További információ: Azure Cache for Redis – áttekintés. Gyorsítótár mérete Válasszon egy gyorsítótárméretet. További információ: Azure Cache for Redis – áttekintés. Válassza a Hálózatkezelés lapot, vagy válassza a Tovább: Hálózatkezelés lehetőséget.
A Hálózatkezelés lapon válassza ki a gyorsítótárhoz használni kívánt kapcsolati módszert.
Válassza a Speciális lapot, vagy válassza a Tovább: Speciális lehetőséget.
A Speciális panelen ellenőrizze vagy válassza ki a hitelesítési módszert az alábbi információk alapján:
- Alapértelmezés szerint egy új alapszintű, standard vagy prémium szintű gyorsítótár esetében a Microsoft Entra-hitelesítés engedélyezve van, és a hozzáférési kulcsok hitelesítése le van tiltva.
- Alapszintű vagy standard gyorsítótárak esetén kiválaszthatja a nem TLS-portok kiválasztását.
- Standard és Prémium szintű gyorsítótárak esetén engedélyezheti a rendelkezésre állási zónákat. A gyorsítótár létrehozása után nem tilthatja le a rendelkezésre állási zónákat.
- Prémium szintű gyorsítótár esetén konfigurálja a nem TLS-port, a fürtözés, a felügyelt identitás és az adatmegőrzés beállításait.
Fontos
Az optimális biztonság érdekében azt javasoljuk, hogy a Microsoft Entra ID-t felügyelt identitásokkal használva engedélyezze a kéréseket a gyorsítótáron, ha lehetséges. A Microsoft Entra-azonosító és a felügyelt identitások használatával történő engedélyezés kiváló biztonságot és egyszerű használatot biztosít a megosztott hozzáférési kulcsok engedélyezésével szemben. A felügyelt identitások gyorsítótárral való használatáról további információt a Microsoft Entra ID használata gyorsítótár-hitelesítéshez című témakörben talál.
(Nem kötelező) Válassza a Címkék lapot, vagy válassza a Tovább: Címkék lehetőséget.
(Nem kötelező) A Címkék lapon adja meg a címke nevét és értékét, ha kategorizálni szeretné a gyorsítótár-erőforrást.
Válassza az Áttekintés + létrehozás lehetőséget.
A Felülvizsgálat + létrehozás lapon az Azure automatikusan ellenőrzi a konfigurációt.
A zöld érvényesítési üzenet megjelenése után válassza a Létrehozás lehetőséget.
Az új gyorsítótár üzembe helyezése több perc alatt megtörténik. Az üzembe helyezés előrehaladását az Azure Cache for Redis Áttekintés panelen követheti nyomon. Amikor az állapot a Futtatás állapotot jeleníti meg, a gyorsítótár készen áll a használatra.
A gazdagép nevének, portjának és hozzáférési kulcsának lekérése
Az Azure Cache for Redis-kiszolgálóhoz való csatlakozáshoz a gyorsítótár-ügyfélnek szüksége van a gyorsítótár gazdanevére, portjára és hozzáférési kulcsára. Egyes ügyfelek kissé eltérő nevek használatával hivatkozhatnak ezekre az elemekre. A gazdagép nevét, portját és kulcsait az Azure Portalon szerezheti be.
Hozzáférési kulcs lekérése a gyorsítótárhoz:
- Az Azure Portalon nyissa meg a gyorsítótárat.
- A szolgáltatás menü Beállítások területén válassza a Hitelesítés lehetőséget.
- A Hitelesítés panelen válassza az Access-kulcsok lapot.
- A hozzáférési kulcs értékének másolásához válassza a Másolás ikont a kulcsmezőben.
A gyorsítótár gazdagépnevének és portjának lekérése:
- Az Azure Portalon nyissa meg a gyorsítótárat.
- A szolgáltatás menüjében válassza az Áttekintés lehetőséget.
- A Gazdagép neve területen válassza a Másolás ikont a gazdagépnév értékének másolásához. A gazdagépnév értéke az űrlap
<DNS name>.redis.cache.windows.net
. - Portok esetén válassza a Másolás ikont a portértékek másolásához.
Jegyezze fel a HOST NAME és az Elsődleges hozzáférési kulcs értékeit. Ezeket az értékeket később használhatja a CacheConnection
titkos kód létrehozásához.
Helyi titkos kód hozzáadása a kapcsolati sztring
A parancssori ablakban hajtsa végre a következő parancsot egy új, névvel ellátott CacheConnection
titkos kód tárolásához. Cserélje le a helyőrzőket (beleértve a szögletes zárójeleket) a gyorsítótár nevére (<cache name>
) és az elsődleges hozzáférési kulcsra (<primary-access-key>
):
dotnet user-secrets set CacheConnection "<cache name>.redis.cache.windows.net,abortConnect=false,ssl=true,allowAdmin=true,password=<primary-access-key>"
Csatlakozás a gyorsítótárhoz a RedisConnection használatával
A gyorsítótárhoz való kapcsolatot az RedisConnection
osztály kezeli. Először hozzon létre kapcsolatot ebben az utasításban a Program.cs:
_redisConnection = await RedisConnection.InitializeAsync(connectionString: configuration["CacheConnection"].ToString());
A RedisConnection.cs a StackExchange.Redis névtér hozzá lesz adva a kódhoz. A névtér szükséges az RedisConnection
osztályhoz.
using StackExchange.Redis;
Az RedisConnection
osztálykód biztosítja, hogy mindig kifogástalan kapcsolat legyen a gyorsítótárral. A kapcsolatot a ConnectionMultiplexer
StackExchange.Redis példánya kezeli. Az RedisConnection
osztály újra létrehozza a kapcsolatot, ha megszakad a kapcsolat, és nem tud automatikusan újracsatlakozni.
További információ: StackExchange.Redis és a StackExchange.Redis GitHub-adattár kódja.
Gyorsítótárparancsok végrehajtása
A Program.cs a következő kódot láthatja a RunRedisCommandsAsync
metódushoz a Program
konzolalkalmazás osztályában:
private static async Task RunRedisCommandsAsync(string prefix)
{
// Simple PING command
Console.WriteLine($"{Environment.NewLine}{prefix}: Cache command: PING");
RedisResult pingResult = await _redisConnection.BasicRetryAsync(async (db) => await db.ExecuteAsync("PING"));
Console.WriteLine($"{prefix}: Cache response: {pingResult}");
// Simple get and put of integral data types into the cache
string key = "Message";
string value = "Hello! The cache is working from a .NET console app!";
Console.WriteLine($"{Environment.NewLine}{prefix}: Cache command: GET {key} via StringGetAsync()");
RedisValue getMessageResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringGetAsync(key));
Console.WriteLine($"{prefix}: Cache response: {getMessageResult}");
Console.WriteLine($"{Environment.NewLine}{prefix}: Cache command: SET {key} \"{value}\" via StringSetAsync()");
bool stringSetResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringSetAsync(key, value));
Console.WriteLine($"{prefix}: Cache response: {stringSetResult}");
Console.WriteLine($"{Environment.NewLine}{prefix}: Cache command: GET {key} via StringGetAsync()");
getMessageResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringGetAsync(key));
Console.WriteLine($"{prefix}: Cache response: {getMessageResult}");
// Store serialized object to cache
Employee e007 = new Employee("007", "Davide Columbo", 100);
stringSetResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringSetAsync("e007", JsonSerializer.Serialize(e007)));
Console.WriteLine($"{Environment.NewLine}{prefix}: Cache response from storing serialized Employee object: {stringSetResult}");
// Retrieve serialized object from cache
getMessageResult = await _redisConnection.BasicRetryAsync(async (db) => await db.StringGetAsync("e007"));
Employee e007FromCache = JsonSerializer.Deserialize<Employee>(getMessageResult);
Console.WriteLine($"{prefix}: Deserialized Employee .NET object:{Environment.NewLine}");
Console.WriteLine($"{prefix}: Employee.Name : {e007FromCache.Name}");
Console.WriteLine($"{prefix}: Employee.Id : {e007FromCache.Id}");
Console.WriteLine($"{prefix}: Employee.Age : {e007FromCache.Age}{Environment.NewLine}");
}
A gyorsítótárelemeket és a StringSetAsync
metódusokat tárolhatja és StringGetAsync
lekérheti.
A példában láthatja, hogy a Message
kulcs értékre van állítva. Az alkalmazás frissítette ezt a gyorsítótárazott értéket. Az alkalmazás a parancsot és a PING
parancsot is végrehajtotta.
.NET-objektumok használata a gyorsítótárban
A Redis-kiszolgáló a legtöbb adatot sztringformátumban tárolja. A sztringek számos adattípust tartalmazhatnak, beleértve a szerializált bináris adatokat is. Szerializált bináris adatokat akkor használhat, ha .NET-objektumokat tárol a gyorsítótárban.
Az Azure Cache for Redis gyorsítótárazhatja a .NET-objektumokat és a primitív adattípusokat is, de a .NET-objektumok gyorsítótárazása előtt szerializálni kell.
A .NET-objektum szerializálása az alkalmazásfejlesztő feladata. Az objektumszerializálás rugalmasságot biztosít a fejlesztőknek a szerializáló kiválasztásában.
A következő Employee
osztályt definiálta a Program.cs , hogy a minta be tudja mutatni, hogyan lehet szerializált objektumot lekérni és beállítani:
class Employee
{
public string Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public Employee(string id, string name, int age)
{
Id = id;
Name = name;
Age = age;
}
}
Minta futtatása
Ha megnyitotta a fájlokat, mentse a fájlokat. Ezután hozza létre az alkalmazást a következő paranccsal:
dotnet build
A .NET-objektumok szerializálásának teszteléséhez futtassa a következő parancsot:
dotnet run
Az erőforrások eltávolítása
Ha továbbra is használni szeretné a cikkben létrehozott erőforrásokat, tartsa meg az erőforráscsoportot.
Ellenkező esetben az erőforrásokhoz kapcsolódó díjak elkerülése érdekében, ha befejezte az erőforrások használatát, törölheti a létrehozott Azure-erőforráscsoportot.
Figyelmeztetés
Az erőforráscsoport törlése nem vonható vissza. Erőforráscsoport törlésekor az erőforráscsoport összes erőforrása véglegesen törlődik. Figyeljen arra, hogy ne töröljön véletlenül erőforráscsoportot vagy erőforrásokat. Ha olyan meglévő erőforráscsoportban hozta létre az erőforrásokat, amelyekben meg szeretné tartani az erőforrásokat, az erőforráscsoport törlése helyett egyenként törölheti az egyes erőforrásokat.
Erőforráscsoport törlése
Jelentkezzen be az Azure Portalra, és válassza az Erőforráscsoportok elemet.
Jelölje ki a törölni kívánt erőforráscsoportot.
Ha sok erőforráscsoport van, a Szűrő bármely mezőhöz mezőbe írja be a cikk végrehajtásához létrehozott erőforráscsoport nevét. A keresési eredmények listájában válassza ki az erőforráscsoportot.
Válassza az Erőforráscsoport törlése elemet.
Az Erőforráscsoport törlése panelen adja meg az erőforráscsoport nevét a megerősítéshez, majd válassza a Törlés lehetőséget.
Néhány percen belül az erőforráscsoport és annak összes erőforrása törlődik.