Szybki start: używanie usługi Azure Cache for Redis w środowisku .NET Framework
W tym przewodniku Szybki start uwzględnisz Azure Cache for Redis w aplikacji .NET Framework, aby mieć dostęp do bezpiecznej dedykowanej pamięci podręcznej dostępnej z poziomu dowolnej aplikacji na platformie Azure. W szczególności używasz klienta StackExchange.Redis z kodem C# w aplikacji konsolowej platformy .NET.
Przejdź do kodu w usłudze GitHub
Sklonuj repozytorium z (https://github.com/Azure-Samples/azure-cache-redis-samples/tree/main/quickstart/dotnet w witrynie GitHub.
Wymagania wstępne
- Subskrypcja platformy Azure — utwórz bezpłatnie
- Visual Studio 2019
- .NET Framework 4 lub nowszej, która jest wymagana przez klienta StackExchange.Redis.
Tworzenie pamięci podręcznej
Aby utworzyć pamięć podręczną, zaloguj się do Azure Portal i wybierz pozycję Utwórz zasób.
Na stronie Nowy wybierz pozycję Bazy danych, a następnie wybierz pozycję Azure Cache for Redis.
Na stronie Nowa pamięć podręczna Redis Cache skonfiguruj ustawienia nowej pamięci podręcznej.
Ustawienie Wybieranie wartości Opis Subskrypcja Z listy rozwijanej i wybierz swoją subskrypcję. Subskrypcja, w ramach której ma zostać utworzone to nowe wystąpienie Azure Cache for Redis. Grupa zasobów Z listy rozwijanej i wybierz grupę zasobów lub wybierz pozycję Utwórz nową i wprowadź nową nazwę grupy zasobów. Nazwa grupy zasobów, w której ma zostać utworzona pamięć podręczna i inne zasoby. Umieszczając wszystkie zasoby aplikacji w jednej grupie zasobów, można je łatwo zarządzać lub usuwać razem. Nazwa DNS Wprowadź unikatową nazwę. Nazwa pamięci podręcznej musi być ciągiem od 1 do 63 znaków, które zawierają tylko cyfry, litery lub łączniki. Nazwa musi zaczynać się i kończyć cyfrą lub literą i nie może zawierać kolejnych łączników. Nazwa hosta wystąpienia pamięci podręcznej będzie nazwą <DNS.redis.cache.windows.net>. Lokalizacja Z listy rozwijanej i wybierz lokalizację. Wybierz region w pobliżu innych usług, które będą używać pamięci podręcznej. Typ pamięci podręcznej Z listy rozwijanej i wybierz warstwę. Warstwa określa rozmiar, wydajność i funkcje dostępne dla pamięci podręcznej. Aby uzyskać więcej informacji, zobacz Omówienie pamięci podręcznej Azure Cache for Redis. Wybierz kartę Sieć lub wybierz przycisk Sieć w dolnej części strony.
Na karcie Sieć wybierz metodę łączności.
Wybierz kartę Dalej: Zaawansowane lub wybierz przycisk Dalej: Zaawansowane w dolnej części strony.
Na karcie Zaawansowane dla wystąpienia podstawowej lub standardowej pamięci podręcznej wybierz przełącznik włącz, jeśli chcesz włączyć port inny niż TLS. Możesz również wybrać wersję usługi Redis, której chcesz użyć, 4 lub 6.
Na karcie Zaawansowane dla wystąpienia pamięci podręcznej w warstwie Premium skonfiguruj ustawienia portów innych niż TLS, klastrowanie i trwałość danych. Możesz również wybrać wersję usługi Redis, której chcesz użyć, 4 lub 6.
Wybierz kartę Dalej: Tagi lub wybierz przycisk Dalej: Tagi w dolnej części strony.
Opcjonalnie na karcie Tagi wprowadź nazwę i wartość, jeśli chcesz sklasyfikować zasób.
Wybierz pozycję Przejrzyj i utwórz. Zostanie wyświetlona karta Przeglądanie i tworzenie, na której platforma Azure weryfikuje konfigurację.
Po pojawieniu się zielonego komunikatu Weryfikacja przekazana pomyślnie wybierz pozycję Utwórz.
Utworzenie pamięci podręcznej zajmuje trochę czasu. Postęp można monitorować na stronie Przegląd Azure Cache for Redis. Gdy stan jest wyświetlany jako Uruchomiono, pamięć podręczna jest gotowa do użycia.
Pobieranie nazwy hosta, portów i kluczy dostępu z Azure Portal
Aby połączyć serwer Azure Cache for Redis, klient pamięci podręcznej potrzebuje nazwy hosta, portów i klucza pamięci podręcznej. Niektórzy klienci mogą odwoływać się do tych elementów przy użyciu nieco innych nazw. Nazwę hosta, porty i klucze można pobrać z Azure Portal.
Aby uzyskać klucze dostępu, w obszarze nawigacji po lewej stronie pamięci podręcznej wybierz pozycję Klucze dostępu.
Aby uzyskać nazwę hosta i porty, w obszarze nawigacji po lewej stronie pamięci podręcznej wybierz pozycję Właściwości. Nazwa hosta jest nazwą DNS.redis.cache.windows.net<>.
Utwórz plik na komputerze o nazwie CacheSecrets.config i umieść go C:\AppSecrets\CacheSecrets.config.
Edytuj plik CacheSecrets.config i dodaj następującą zawartość:
<appSettings> <add key="CacheConnection" value="<host-name>,abortConnect=false,ssl=true,allowAdmin=true,password=<access-key>"/> </appSettings>
Zastąp element
<host-name>
nazwą hosta pamięci podręcznej.Zastąp element
<access-key>
kluczem podstawowym pamięci podręcznej.Zapisz plik.
Konfigurowanie klienta pamięci podręcznej
W tej sekcji przygotujesz aplikację konsolową do korzystania z klienta StackExchange.Redis dla platformy .NET.
W programie Visual Studio wybierz pozycję Narzędzia>Konsola menedżera pakietówNuGet Package Manager> i uruchom następujące polecenie w oknie Konsola menedżera pakietów.
Install-Package StackExchange.Redis
Po ukończeniu instalacji klient pamięci podręcznej StackExchange.Redis będzie dostępny do użycia z projektem.
Nawiązywanie połączenia z pamięcią podręczną wpisów tajnych
W programie Visual Studio otwórz plik App.config , aby sprawdzić, czy zawiera appSettings
file
atrybut, który odwołuje się do pliku CacheSecrets.config .
<?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>
Nigdy nie należy przechowywać poświadczeń w kodzie źródłowym. Aby zachować prostotę tego przykładu, użyjemy zewnętrznego pliku konfiguracji wpisów tajnych. Lepszym rozwiązaniem byłoby użycie usługi Azure Key Vault z certyfikatami.
Nawiązywanie połączenia z pamięcią podręczną za pomocą programu RedisConnection
Połączenie z pamięcią podręczną jest zarządzane przez klasę RedisConnection
. Połączenie jest najpierw nawiązywane w tej instrukcji z :Program.cs
_redisConnection = await RedisConnection.InitializeAsync(connectionString: ConfigurationManager.AppSettings["CacheConnection"].ToString());
Wartość ustawienia appSetting CacheConnection jest używana do odwoływania się do parametrów połączenia pamięci podręcznej z witryny Azure Portal jako parametru hasła.
W RedisConnection.cs
pliku zostanie wyświetlona StackExchange.Redis
przestrzeń nazw ze using
słowem kluczowym . Jest to wymagane dla RedisConnection
klasy .
using StackExchange.Redis;
Kod RedisConnection
gwarantuje, że zawsze istnieje dobre połączenie z pamięcią podręczną przez zarządzanie wystąpieniem ConnectionMultiplexer
z programu StackExchange.Redis
. Klasa RedisConnection
odtwarza połączenie, gdy połączenie zostanie utracone i nie będzie można nawiązać połączenia automatycznie.
Aby uzyskać więcej informacji, zobacz StackExchange.Redis i kod w repozytorium GitHub.
Wykonywanie poleceń pamięci podręcznej
W program.cs
pliku można zobaczyć następujący kod dla RunRedisCommandsAsync
metody w Program
klasie dla aplikacji konsolowej:
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}");
}
Elementy pamięci podręcznej można zapisywać i pobierać za pomocą metod StringSetAsync
i StringGetAsync
.
W tym przykładzie widać Message
, że klucz jest ustawiony na wartość. Aplikacja zaktualizowała tę wartość w pamięci podręcznej. Aplikacja wykonała PING
również polecenie i .
Praca z obiektami platformy .NET w pamięci podręcznej
Serwer Redis przechowuje większość danych jako ciągi, ale te ciągi mogą zawierać wiele typów danych, w tym serializowane dane binarne, które mogą być używane podczas przechowywania obiektów platformy .NET w pamięci podręcznej.
Usługa Azure Cache for Redis może buforować obiekty platformy .NET oraz pierwotne typy danych, ale zanim będzie możliwe buforowanie obiektu platformy .NET, trzeba go serializować.
Odpowiedzialność za serializację obiektu .NET spoczywa na deweloperze aplikacji, który ma możliwość wybrania serializatora.
Jednym z prostych sposobów serializacji obiektów jest użycie JsonConvert
metod serializacji w programie System.text.Json
.
System.text.Json
Dodaj przestrzeń nazw do programu Visual Studio:
Wybierz pozycję Narzędzia>Konsola menedżera pakietówNuGet Package Manager>*.
Następnie uruchom następujące polecenie w oknie Konsola menedżera pakietów.
Install-Package system.text.json
Następująca Employee
klasa została zdefiniowana w pliku Program.cs , aby przykład mógł również pokazać, jak pobrać i ustawić serializowany obiekt :
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;
}
}
Uruchamianie aplikacji przykładowej
Naciśnij klawisze Ctrl+F5, aby skompilować i uruchomić aplikację konsolową na potrzeby testowania serializacji obiektów platformy .NET.
Czyszczenie zasobów
Jeśli kontynuujesz korzystanie z tego przewodnika Szybki start, możesz zachować utworzone zasoby i użyć ich ponownie.
W przeciwnym razie po zakończeniu pracy z przykładową aplikacją poradnika Szybki start możesz usunąć zasoby platformy Azure utworzone w tym poradniku Szybki start, aby uniknąć naliczania opłat.
Ważne
Usunięcie grupy zasobów jest nieodwracalne i grupa zasobów oraz wszystkie zawarte w niej zasoby zostaną trwale usunięte. Uważaj, aby nie usunąć przypadkowo niewłaściwych zasobów lub grupy zasobów. Jeśli utworzono zasoby do hostowania tego przykładu w istniejącej grupie zasobów zawierającej zasoby, które chcesz zachować, możesz usunąć każdy zasób indywidualnie po lewej stronie zamiast usuwać grupę zasobów.
Zaloguj się do witryny Azure Portal i wybierz pozycję Grupy zasobów.
W polu tekstowym Filtruj według nazwy... wpisz nazwę grupy zasobów. Instrukcje w tym artykule używają grupy zasobów o nazwie TestResources. Na liście wyników w grupie zasobów wybierz pozycję ... a następnie pozycję Usuń grupę zasobów.
Zostanie wyświetlony monit o potwierdzenie usunięcia grupy zasobów. Wpisz nazwę grupy zasobów, aby potwierdzić, a następnie wybierz pozycję Usuń.
Po krótkim czasie grupa zasobów i wszystkie zawarte w niej zasoby zostaną usunięte.