Acara
Membangun Aplikasi dan Agen AI
17 Mar, 21 - 21 Mar, 10
Bergabunglah dengan seri meetup untuk membangun solusi AI yang dapat diskalakan berdasarkan kasus penggunaan dunia nyata dengan sesama pengembang dan pakar.
Daftar sekarangBrowser ini sudah tidak didukung.
Mutakhirkan ke Microsoft Edge untuk memanfaatkan fitur, pembaruan keamanan, dan dukungan teknis terkini.
Meliputi: integrasi hosting dan integrasi
Client
Azure Cache for Redis menyediakan penyimpanan data dalam memori berdasarkan perangkat lunak Redis. Redis meningkatkan performa dan skalabilitas aplikasi yang sangat menggunakan penyimpanan data backend. Ini dapat memproses permintaan aplikasi dalam volume besar dengan menyimpan data yang sering diakses dalam memori server, yang dapat ditulis dan dibaca dari dengan cepat. Redis menghadirkan solusi penyimpanan data latensi rendah dan throughput tinggi yang penting untuk aplikasi modern.
Azure Cache for Redis menawarkan sumber terbuka Redis (RedisOSS) dan produk komersial dari Redis Inc. (Redis Enterprise) sebagai layanan terkelola. Ini menyediakan instans server Redis yang aman dan khusus dan kompatibilitas API Redis penuh. Microsoft mengoperasikan layanan, yang dihosting di Azure, dan dapat digunakan oleh aplikasi apa pun di dalam atau di luar Azure.
Integrasi .NET AspireAzure Cache for Redis memungkinkan Anda terhubung ke instans Azure Cache for Redis yang ada, atau membuat instans baru, atau menjalankan sebagai kontainer secara lokal dari .NET dengan gambar kontainer docker.io/library/redis
.
Integrasi hosting .NET AspireAzure Cache for Redis memodelkan sumber daya AzureRedis sebagai jenis AzureRedisCacheResource. Untuk mengakses tipe dan API ini serta mendefinisikannya sebagai sumber daya dalam proyek host aplikasi Anda di, tambahkan paket NuGet 📦Aspire.Hosting.Azure.Redis.
dotnet add package Aspire.Hosting.Azure.Redis
Untuk informasi selengkapnya, lihat dotnet menambahkan paket atau Mengelola dependensi paket di aplikasi .NET.
Di proyek host aplikasi Anda, panggil AddAzureRedis pada instans builder
untuk menambahkan sumber daya AzureAzure Cache for Redis, seperti yang ditunjukkan dalam contoh berikut:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddAzureRedis("azcache");
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Panggilan sebelumnya ke AddAzureRedis
mengonfigurasi sumber daya server Redis untuk disebarkan sebagai Azure Cache for Redis.
Penting
Secara default, AddAzureRedis
mengonfigurasi autentikasi ID Microsoft Entra . Ini memerlukan perubahan pada aplikasi yang perlu terhubung ke sumber daya ini, misalnya, integrasi klien.
Tip
Saat Anda memanggil AddAzureRedis, secara implisit memanggil AddAzureProvisioning—yang menambahkan dukungan untuk menghasilkan sumber daya Azure secara dinamis selama pengaktifan aplikasi. Aplikasi harus mengonfigurasi langganan dan lokasi yang sesuai. Untuk informasi selengkapnya, lihat Penyediaan lokal: Konfigurasi.
Jika Anda baru menggunakan Bicep, ini adalah bahasa spesifik domain untuk menentukan sumber daya Azure. Dengan .NET.NET Aspire, Anda tidak perlu menulis Bicep secara manual, sebagai gantinya API provisi menghasilkan Bicep untuk Anda. Ketika Anda memublikasikan aplikasi Anda, Bicep yang dihasilkan dikeluarkan di samping file manifes. Saat Anda menambahkan sumber daya AzureAzure Cache for Redis, Bicep berikut dibuat:
@description('The location for the resource(s) to be deployed.')
param location string = resourceGroup().location
param principalId string
param principalName string
resource redis 'Microsoft.Cache/redis@2024-03-01' = {
name: take('redis-${uniqueString(resourceGroup().id)}', 63)
location: location
properties: {
sku: {
name: 'Basic'
family: 'C'
capacity: 1
}
enableNonSslPort: false
disableAccessKeyAuthentication: true
minimumTlsVersion: '1.2'
redisConfiguration: {
'aad-enabled': 'true'
}
}
tags: {
'aspire-resource-name': 'redis'
}
}
resource redis_contributor 'Microsoft.Cache/redis/accessPolicyAssignments@2024-03-01' = {
name: take('rediscontributor${uniqueString(resourceGroup().id)}', 24)
properties: {
accessPolicyName: 'Data Contributor'
objectId: principalId
objectIdAlias: principalName
}
parent: redis
}
output connectionString string = '${redis.properties.hostName},ssl=true'
Bicep sebelumnya adalah modul yang menyediakan AzureAzure Cache for Redis dengan default berikut:
location
: Lokasi sumber daya AzureAzure Cache for Redis. Defaultnya adalah lokasi grup sumber daya.principalId
: ID utama sumber daya AzureAzure Cache for Redis.principalName
: Nama utama sumber daya AzureAzure Cache for Redis.sku
: SKU sumber daya AzureAzure Cache for Redis. Defaultnya adalah Basic
dengan kapasitas 1
.enableNonSslPort
: Port non-SSL dari sumber daya AzureAzure Cache for Redis. Defaultnya adalah false
.disableAccessKeyAuthentication
: Autentikasi kunci akses sumber daya AzureAzure Cache for Redis. Defaultnya adalah true
.minimumTlsVersion
: Versi TLS minimum dari sumber daya AzureAzure Cache for Redis. Defaultnya adalah 1.2
.redisConfiguration
: Konfigurasi Redis dari sumber daya Azure Cache for Redis. Defaultnya adalah aad-enabled
diatur ke true
.tags
: Tag sumber daya AzureAzure Cache for Redis. Defaultnya adalah aspire-resource-name
yang diatur ke nama sumber daya Aspire, dalam hal ini adalah redis
.redis_contributor
: Kontributor sumber daya AzureAzure Cache for Redis, dengan nama kebijakan akses Data Contributor
.connectionString
: String koneksi sumber daya AzureAzure Cache for Redis.Selain AzureAzure Cache for Redis, ini juga menyediakan penetapan kebijakan akses aplikasi ke cache. Bicep yang dihasilkan adalah titik awal dan dapat disesuaikan untuk memenuhi persyaratan spesifik Anda.
Semua sumber daya .NET AspireAzure adalah subkelas dari jenis AzureProvisioningResource. Jenis ini memungkinkan penyesuaian Bicep yang dihasilkan dengan menyediakan API yang fasih untuk mengonfigurasi sumber daya Azure—menggunakan API ConfigureInfrastructure<T>(IResourceBuilder<T>, Action<AzureResourceInfrastructure>). Misalnya, Anda dapat mengonfigurasi kind
, consistencyPolicy
, locations
, dan banyak lagi. Contoh berikut menunjukkan cara mengkustomisasi sumber daya AzureAzure Cache for Redis:
builder.AddAzureRedis("redis")
.WithAccessKeyAuthentication()
.ConfigureInfrastructure(infra =>
{
var redis = infra.GetProvisionableResources()
.OfType<RedisResource>()
.Single();
redis.Sku = new()
{
Family = RedisSkuFamily.BasicOrStandard,
Name = RedisSkuName.Standard,
Capacity = 1,
};
redis.Tags.Add("ExampleKey", "Example value");
});
Kode sebelumnya:
infra
adalah instans dari jenis AzureResourceInfrastructure.Sku
memiliki keluarga BasicOrStandard
, nama Standard
, dan kapasitas 1
.ExampleKey
dan nilai Example value
.Ada lebih banyak opsi konfigurasi yang tersedia untuk menyesuaikan sumber daya AzureAzure Cache for Redis. Untuk informasi selengkapnya, lihat Azure.Provisioning.Redis. Untuk informasi selengkapnya, lihat Azure. Penyesuaian provisi.
Anda mungkin memiliki AzureAzure Cache for Redis yang sudah ada untuk disambungkan. Alih-alih mewakili sumber daya AzureAzure Cache for Redis baru, Anda dapat menambahkan string koneksi ke host aplikasi. Untuk menambahkan koneksi ke AzureAzure Cache for Redisyang sudah ada, panggil metode AddConnectionString:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddConnectionString("azure-redis");
builder.AddProject<Projects.WebApplication>("web")
.WithReference(cache);
// After adding all resources, run the app...
Catatan
String koneksi digunakan untuk mewakili berbagai informasi koneksi, termasuk koneksi database, broker pesan, URI titik akhir, dan layanan lainnya. Dalam nomenklatur .NET.NET Aspire, istilah "string koneksi" digunakan untuk mewakili segala jenis informasi koneksi.
String koneksi dikonfigurasi dalam konfigurasi host aplikasi, biasanya di bawah Rahasia Pengguna, di bawah bagian ConnectionStrings
. Host aplikasi menyuntikkan string koneksi ini sebagai variabel lingkungan ke semua sumber daya dependen, misalnya:
{
"ConnectionStrings": {
"azure-redis": "<your-redis-name>.redis.cache.windows.net:6380,ssl=true,abortConnect=False"
}
}
Sumber daya dependen dapat mengakses string koneksi yang disuntikkan dengan memanggil metode GetConnectionString, dan meneruskan nama koneksi sebagai parameter, dalam hal ini "azure-redis"
. API GetConnectionString
singkatan untuk IConfiguration.GetSection("ConnectionStrings")[name]
.
Integrasi hosting Azure Cache for Redis mendukung menjalankan server Redis sebagai kontainer lokal. Ini bermanfaat untuk situasi di mana Anda ingin menjalankan server Redis secara lokal untuk tujuan pengembangan dan pengujian, menghindari kebutuhan untuk menyediakan sumber daya Azure atau terhubung ke server Azure Cache for Redis yang ada.
Untuk menggunakan gambar kontainer docker.io/library/redis
, dan menjalankan instans AzureAzure Cache for Redis sebagai kontainer secara lokal, rantai panggilan ke RunAsContainer, seperti yang ditunjukkan dalam contoh berikut:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddAzureRedis("azcache")
.RunAsContainer();
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Kode sebelumnya mengonfigurasi sumber daya Redis untuk berjalan secara lokal dalam kontainer.
Tip
Metode RunAsContainer
berguna untuk pengembangan dan pengujian lokal. API mengekspos delegasi opsional yang memungkinkan Anda menyesuaikan konfigurasi RedisResource yang mendasar, seperti menambahkan Redis Insights, Redis Commander, menambahkan volume data atau pemasangan ikatan data. Untuk informasi selengkapnya, lihat integrasi hosting .NET AspireRedis.
Secara default, sumber daya AzureAzure Cache for Redis dikonfigurasi untuk menggunakan autentikasi ID Microsoft Entra. Jika Anda ingin menggunakan autentikasi kata sandi (tidak disarankan), Anda dapat mengonfigurasi server untuk menggunakan autentikasi kata sandi dengan memanggil metode WithAccessKeyAuthentication:
var builder = DistributedApplication.CreateBuilder(args);
var cache = builder.AddAzureRedis("azcache")
.WithAccessKeyAuthentication();
builder.AddProject<Projects.ExampleProject>()
.WithReference(cache);
// After adding all resources, run the app...
Kode sebelumnya mengonfigurasi sumber daya AzureAzure Cache for Redis untuk menggunakan autentikasi kunci akses. Ini mengubah Bicep yang dihasilkan untuk menggunakan autentikasi kunci akses alih-alih autentikasi ID Microsoft Entra. Dengan kata lain, string koneksi akan berisi kata sandi, dan akan ditambahkan ke rahasia Azure Key Vault.
Untuk memulai integrasi klien .NET Aspire Stack Exchange Redis, instal paket NuGet 📦Aspire.StackExchange.Redis di proyek yang menggunakan klien, yaitu proyek untuk aplikasi yang menggunakan klien Redis. Integrasi klien Redis mendaftarkan instans IConnectionMultiplexer yang dapat Anda gunakan untuk berinteraksi dengan Redis.
dotnet add package Aspire.StackExchange.Redis
Dalam file Program.cs proyek yang digunakan oleh klien Anda, panggil metode ekstensi AddRedisClient pada IHostApplicationBuilder apa pun untuk mendaftarkan IConnectionMultiplexer
agar dapat digunakan melalui kontainer injeksi dependensi. Metode ini mengambil parameter nama koneksi.
builder.AddRedisClient(connectionName: "cache");
Tip
Parameter connectionName
harus cocok dengan nama yang digunakan saat menambahkan sumber daya AzureAzure Cache for Redis dalam proyek host aplikasi. Untuk informasi selengkapnya, lihat Tambahan sumber daya AzureAzure Cache for Redis.
Kemudian, Anda dapat mengambil instans IConnectionMultiplexer
dengan menggunakan injeksi dependensi. Misalnya, untuk mengambil koneksi dari layanan contoh:
public class ExampleService(IConnectionMultiplexer connectionMux)
{
// Use connection multiplexer...
}
Untuk informasi selengkapnya tentang injeksi dependensi, lihat .NET injeksi dependensi.
Secara default, saat Anda memanggil AddAzureRedis dalam integrasi hosting Redis Anda, itu mengonfigurasi ID Microsoft Entra. Instal paket NuGet 📦 Microsoft.Azure.StackExchangeRedis untuk mengaktifkan autentikasi.
dotnet add package Microsoft.Azure.StackExchangeRedis
Koneksi Redis dapat diakses menggunakan integrasi klien dan Microsoft.Azure.StackExchangeRedis
. Pertimbangkan kode konfigurasi berikut:
var azureOptionsProvider = new AzureOptionsProvider();
var configurationOptions = ConfigurationOptions.Parse(
builder.Configuration.GetConnectionString("cache") ??
throw new InvalidOperationException("Could not find a 'cache' connection string."));
if (configurationOptions.EndPoints.Any(azureOptionsProvider.IsMatch))
{
await configurationOptions.ConfigureForAzureWithTokenCredentialAsync(
new DefaultAzureCredential());
}
builder.AddRedisClient("cache", configureOptions: options =>
{
options.Defaults = configurationOptions.Defaults;
});
Untuk informasi selengkapnya, lihat Microsoft.Azure. Repositori StackExchangeRedis.
Mungkin ada situasi di mana Anda ingin mendaftarkan beberapa instans IConnectionMultiplexer
dengan nama koneksi yang berbeda. Untuk mendaftarkan klien bertipe Redis, panggil metode AddKeyedRedisClient:
builder.AddKeyedRedisClient(name: "chat");
builder.AddKeyedRedisClient(name: "queue");
Kemudian Anda dapat mengambil instance IConnectionMultiplexer
menggunakan injeksi dependensi. Misalnya, untuk mengambil koneksi dari layanan contoh:
public class ExampleService(
[FromKeyedServices("chat")] IConnectionMultiplexer chatConnectionMux,
[FromKeyedServices("queue")] IConnectionMultiplexer queueConnectionMux)
{
// Use connections...
}
Untuk informasi selengkapnya tentang layanan utama, lihat .NET injeksi dependensi: Layanan utama.
Integrasi klien .NET Aspire Stack Exchange Redis menyediakan beberapa opsi untuk mengonfigurasi koneksi Redis berdasarkan persyaratan dan konvensi proyek Anda.
Saat menggunakan string koneksi dari bagian konfigurasi ConnectionStrings
, Anda dapat memberikan nama string koneksi saat memanggil AddRedis:
builder.AddRedis("cache");
Kemudian string koneksi akan diambil dari bagian konfigurasi ConnectionStrings
:
{
"ConnectionStrings": {
"cache": "localhost:6379"
}
}
Untuk informasi selengkapnya tentang cara memformat string koneksi ini, lihat dokumen konfigurasi RedisStack Exchange.
Integrasi .NET Aspire Stack Exchange Redis mendukung Microsoft.Extensions.Configuration. Menggunakan kunci Aspire:StackExchange:Redis
untuk memuat StackExchangeRedisSettings dari konfigurasi. Contoh appsettings.json yang mengonfigurasi beberapa opsi:
{
"Aspire": {
"StackExchange": {
"Redis": {
"ConfigurationOptions": {
"ConnectTimeout": 3000,
"ConnectRetry": 2
},
"DisableHealthChecks": true,
"DisableTracing": false
}
}
}
}
Untuk skema JSON integrasi klien Redis lengkap, lihat Aspire. StackExchange.Redis/ConfigurationSchema.json.
Anda juga dapat meneruskan delegasi Action<StackExchangeRedisSettings>
untuk mengatur beberapa atau semua opsi secara langsung, misalnya untuk mengonfigurasi DisableTracing
:
builder.AddRedisClient(
"cache",
static settings => settings.DisableTracing = true);
Secara default, integrasi klien .NET.NET Aspire memiliki pemeriksaan kesehatan diaktifkan untuk semua layanan. Demikian pula, banyak integrasi hosting .NET.NET Aspire juga mengaktifkan titik akhir pemeriksaan kesehatan. Untuk informasi selengkapnya, lihat:
Integrasi .NET Aspire Stack Exchange Redis menangani hal berikut:
false
, yang berupaya menyambung ke instans kontainer./health
, yang mengharuskan semua pemeriksaan kesehatan yang terdaftar harus lolos agar aplikasi dianggap siap untuk menerima lalu lintas..NET .NET Aspire integrasi secara otomatis menyiapkan konfigurasi Pengelogan, Pelacakan, dan Metrik, yang terkadang dikenal sebagai pilar pengamatan. Untuk informasi selengkapnya tentang pengamatan integrasi dan telemetri, lihat gambaran umum integrasi .NET.NET Aspire. Bergantung pada layanan pendukung, beberapa integrasi mungkin hanya mendukung beberapa fitur ini. Misalnya, beberapa integrasi mendukung pengelogan dan pelacakan, tetapi bukan metrik. Fitur telemetri juga dapat dinonaktifkan menggunakan teknik yang disajikan di bagian Konfigurasi.
Integrasi .NET Aspire Stack Exchange Redis menggunakan kategori log berikut:
Aspire.StackExchange.Redis
Integrasi .NET AspireRedis Stack Exchange akan memancarkan aktivitas pelacakan berikut menggunakan OpenTelemetry:
OpenTelemetry.Instrumentation.StackExchangeRedis
Integrasi .NET AspireRedis Stack Exchange saat ini tidak mendukung metrik secara bawaan karena keterbatasan dengan pustaka StackExchange.Redis
.
*: Redis adalah merek dagang terdaftar dari Redis Ltd. Setiap hak di dalamnya dilindungi untuk Redis Ltd. Penggunaan apa pun oleh Microsoft hanya untuk tujuan referensial dan tidak menunjukkan sponsor, dukungan, atau afiliasi apa pun antara Redis dan Microsoft. Kembali keatas?
Umpan balik .NET Aspire
.NET Aspire adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik:
Acara
Membangun Aplikasi dan Agen AI
17 Mar, 21 - 21 Mar, 10
Bergabunglah dengan seri meetup untuk membangun solusi AI yang dapat diskalakan berdasarkan kasus penggunaan dunia nyata dengan sesama pengembang dan pakar.
Daftar sekarangPelatihan
Modul
Meningkatkan performa dengan cache dalam proyek .NET Aspire - Training
Dalam modul ini, Anda akan mempelajari cache di aplikasi cloud-native .NET Aspire dan cara menggunakannya untuk mengoptimalkan performa layanan mikro Anda.