Gyorsútmutató: Az Azure Cache for Redis használata a .NET-keretrendszerben
Ebben a rövid útmutatóban az Azure Cache for Redist egy .NET-keretrendszer alkalmazásba építi be, hogy hozzáférhessen egy biztonságos, dedikált gyorsítótárhoz, amely az Azure bármely alkalmazásából elérhető. A StackExchange.Redis-ügyfelet kifejezetten C# kóddal használja egy .NET-konzolalkalmazásban.
Ugrás a GitHubon található kódra
Klónozza az adattárat (https://github.com/Azure-Samples/azure-cache-redis-samples/tree/main/quickstart/dotnet a GitHubon.
Előfeltételek
- Azure-előfizetés – hozzon létre egyet ingyenesen
- Visual Studio 2019
- .NET-keretrendszer 4 vagy újabb, amelyet a StackExchange.Redis-ügyfél igényel.
Gyorsítótár létrehozása
Gyorsítótár létrehozásához jelentkezzen be az Azure Portalra, és válassza az Erőforrás létrehozása lehetőséget.
Az Új lapon válassza az Adatbázisok, majd az Azure Cache for Redis lehetőséget.
Az Új Redis Cache lapon konfigurálja az új gyorsítótár beállításait.
Beállítás Válasszon egy értéket Leírás Előfizetés Legördülő menüben válassza ki az előfizetését. Az előfizetés, amely alatt létre kell hozni ezt az új Azure Cache for Redis-példányt. Erőforráscsoport Legördülő menüben 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 kívánja 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 és 63 karakter közötti sztringnek kell lennie, amely csak számokat, betűket vagy 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 állomásneve< DNS name.redis.cache.windows.net.> Helyen Legördülő menüben válasszon ki egy helyet. Válasszon ki egy régiót a gyorsítótárat használó más szolgáltatások közelében. Gyorsítótár típusa Legördülő menü, és válasszon ki egy szintet. A szint határozza meg a gyorsítótár számára elérhető méretet, teljesítményt és szolgáltatásokat. További információt az Azure Cache for Redis áttekintésében talál. Válassza a Hálózat lapfület , vagy válassza a Lap alján található Hálózatkezelés gombot.
A Hálózatkezelés lapon válassza ki a kapcsolati módszert.
Válassza a Tovább: Speciális lapot, vagy a Lap alján található Tovább: Speciális gombot a Speciális lap megjelenítéséhez.
- Alapszintű vagy standard gyorsítótárak esetén állítsa be a nem TLS-portok kijelölését. Kiválaszthatja azt is, hogy engedélyezni szeretné-e a Microsoft Entra-hitelesítést.
- 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. Kiválaszthatja azt is, hogy engedélyezni szeretné-e a Microsoft Entra-hitelesítést.
Válassza a Tovább: Címkék lapot, vagy válassza a Következő: Címkék gombot a lap alján.
Ha kategorizálni szeretné az erőforrást, a Címkék lapon adja meg a nevet és az értéket.
Válassza az Áttekintés + létrehozás lehetőséget. Ekkor megjelenik a Véleményezés + létrehozás lap, ahol az Azure 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.
A gyorsítótár létrehozása eltarthat egy ideig. Az előrehaladást az Azure Cache for Redis áttekintési oldalán követheti nyomon. Ha az állapot futásként jelenik meg, a gyorsítótár készen áll a használatra.
Állomásnév, portok és hozzáférési kulcsok lekérése az Azure Portalról
Az Azure Cache for Redis-kiszolgáló csatlakoztatásához a gyorsítótár-ügyfélnek szüksége van a gazdagép nevére, portjára és kulcsára a gyorsítótárhoz. Egyes ügyfelek különböző neveken hivatkozhatnak ezekre az elemekre. A gazdagép nevét, portját és kulcsait az Azure Portalról szerezheti be.
A hozzáférési kulcsok lekéréséhez a gyorsítótár bal oldali navigációs sávjáról válassza az Access-kulcsok lehetőséget.
A gazdagép nevének és portjának lekéréséhez a gyorsítótár bal oldali navigációs sávjáról válassza a Tulajdonságok lehetőséget. A gazdagép neve a DNS name.redis.cache.windows.net> formátumú<.
Hozzon létre egy fájlt a számítógépen CacheSecrets.config néven, és helyezze el a következő helyen: C:\AppSecrets\CacheSecrets.config.
Módosítsa a CacheSecrets.config fájlt, és adja hozzá az alábbi tartalmakat:
<appSettings> <add key="CacheConnection" value="<host-name>,abortConnect=false,ssl=true,allowAdmin=true,password=<access-key>"/> </appSettings>
A
<host-name>
karakterláncot cserélje le a gyorsítótár gazdagépének nevére.Az
<access-key>
karakterláncot cserélje le a gyorsítótár elsődleges kulcsára.Mentse a fájlt.
A gyorsítótárügyfél konfigurálása
Ebben a szakaszban előkészíti a konzolalkalmazást a .NET-hez készült StackExchange.Redis-ügyfél használatára.
A Visual Studióban válassza a Tools>NuGet Csomagkezelő> Csomagkezelő Console lehetőséget, és futtassa a következő parancsot a Csomagkezelő konzolablakból.
Install-Package StackExchange.Redis
A telepítés befejezése után a StackExchange.Redis gyorsítótárügyfél már használható a projekttel.
Csatlakozás a Titkos kulcsok gyorsítótárba
Nyissa meg az App.config fájlt a Visual Studióban, és ellenőrizze, hogy tartalmaz-e afile
appSettings
CacheSecrets.config fájlra hivatkozó attribútumot.
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup>
<supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.7.2" />
</startup>
<appSettings file="C:\AppSecrets\CacheSecrets.config"></appSettings>
</configuration>
Soha ne tároljon hitelesítő adatokat a forráskódban. A minta egyszerűségéhez külső titkos kulcsok konfigurációs fájlja használható. Ennél még jobb megoldás lenne a tanúsítványokkal rendelkező Azure Key Vault használata.
Csatlakozás a gyorsítótárba a Redis használatával Csatlakozás ion
A gyorsítótárhoz való kapcsolatot az RedisConnection
osztály kezeli. A kapcsolat először a következő utasításból Program.cs
jön létre:
_redisConnection = await RedisConnection.InitializeAsync(connectionString: ConfigurationManager.AppSettings["CacheConnection"].ToString());
A rendszer a CacheConnection alkalmazásbeállítás értékét használja ahhoz, hogy jelszóparaméterként hivatkozzon a gyorsítótár Azure Portalon található kapcsolati sztringjére.
Ekkor RedisConnection.cs
megjelenik a StackExchange.Redis
kulcsszóval rendelkező using
névtér. Erre szükség van az RedisConnection
osztályhoz.
using StackExchange.Redis;
A RedisConnection
kód biztosítja, hogy mindig kifogástalan kapcsolat legyen a gyorsítótárral a példány StackExchange.Redis
kezelésével.ConnectionMultiplexer
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 GitHub-adattár kódja.
Gyorsítótárparancsok végrehajtása
A program.cs
következő kód jelenik meg 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árelemek a StringSetAsync
és a StringGetAsync
metódussal tárolhatók és kérhetők le.
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 sztringként tárolja, de ezek a sztringek számos adattípust tartalmazhatnak, beleértve a szerializált bináris adatokat is, amelyek a .NET-objektumok gyorsítótárban való tárolására használhatók.
Az Azure Cache for Redis képes a .NET-objektumok és a primitív adattípusok gyorsítótárazásához, de a .NET-objektumok gyorsítótárazása előtt szerializálni kell.
Ez a .NET-objektumszerializálás az alkalmazásfejlesztők feladata, akik így rugalmasan kiválaszthatják a szerializálót.
Az objektumok szerializálásának egyik egyszerű módja a szerializálási módszerek használata a JsonConvert
következőben System.text.Json
: .
Adja hozzá a névteret a System.text.Json
Visual Studióhoz:
Válassza az Eszközök>NuGet Csomagkezelő> Csomagkezelő konzol* lehetőséget.
Ezután futtassa a következő parancsot a Csomagkezelő konzolablakból.
Install-Package system.text.json
A következő Employee
osztály Program.cs lett definiálva, hogy a minta be tudja mutatni a szerializált objektum lekérésének és beállításának módját is:
class Employee
{
public string Id { get; set; }
public string Name { get; set; }
public int Age { get; set; }
public Employee(string employeeId, string name, int age)
{
Id = employeeId;
Name = name;
Age = age;
}
}
Minta futtatása
A .NET-objektumok szerializálásának teszteléséhez buildelje és futtassa a konzolalkalmazást a Ctrl+F5 billentyűkombináció lenyomásával.
Az erőforrások eltávolítása
Ha folytatja a rövid útmutató használatát, megtarthatja a létrehozott erőforrásokat, és újra felhasználhatja őket.
Ha azonban befejezte az oktatóanyag mintaalkalmazásának használatát, a díjak elkerülése érdekében törölheti az ebben a rövid útmutatóban létrehozott Azure-erőforrásokat.
Fontos
Az erőforráscsoport törlése nem visszaállítható; az erőforráscsoport és a benne foglalt erőforrások véglegesen törlődnek. Figyeljen arra, hogy ne töröljön véletlenül erőforráscsoportot vagy erőforrásokat. Ha a minta üzemeltetéséhez létrehozott erőforrásokat egy meglévő erőforráscsoporton belül hozta létre, amely a megtartani kívánt erőforrásokat tartalmazza, az erőforráscsoport törlése helyett egyenként törölheti az egyes erőforrásokat a bal oldalon.
Jelentkezzen be az Azure Portalra, és válassza az Erőforráscsoportok elemet.
A Szűrés név alapján... mezőbe írja be az erőforráscsoport nevét. A jelen cikk utasításai egy TestResources nevű erőforráscsoportot használtak. Az eredménylistában az erőforráscsoportban válassza a ... lehetőséget, majd az Erőforráscsoport törlése lehetőséget.
A rendszer kéri, hogy erősítse meg az erőforráscsoport törlését. Írja be a megerősítéshez az erőforráscsoport nevét, és válassza a Törlés lehetőséget.
A rendszer néhány pillanaton belül törli az erőforráscsoportot és a benne foglalt erőforrásokat.