Es gibt zwei Caching-Schnittstellen, IMemoryCache
und IDistributedCache
. Die Datei IDistrbutedCache
ist für die Verwendung in Cloud-gehosteten Szenarios vorgesehen, in denen ein gemeinsamer Cache vorhanden ist, der von mehreren Instanzen der Anwendung gemeinsam genutzt wird. Verwenden Sie andernfalls die IMemoryCache
.
Sie können sie in Ihrem Autostart hinzufügen, indem Sie die Methode unter Aufruf:
private static void ConfigureCaching(IServiceCollection services)
{
// Adds a default in-memory implementation of IDistributedCache, which is very fast but
// the cache will not be shared between instances of the application.
// Also adds IMemoryCache.
services.AddCaching();
// Uncomment the following line to use the Redis implementation of
// IDistributedCache. This will override any previously registered IDistributedCache
// service. Redis is a very fast cache provider and the recommended distributed cache
// provider.
// services.AddTransient<IDistributedCache, RedisCache>();
// Uncomment the following line to use the Microsoft SQL Server implementation of
// IDistributedCache. Note that this would require setting up the session state database.
// Redis is the preferred cache implementation but you can use SQL Server if you don't
// have an alternative.
// services.AddSqlServerCache(o =>
// {
// o.ConnectionString =
// "Server=.;Database=ASPNET5SessionState;Trusted_Connection=True;";
// o.SchemaName = "dbo";
// o.TableName = "Sessions";
// });
}
Die IDistributedCache
ist die eine die meisten Menschen das Beste aus Caching verwenden möchten, bekommen, aber es hat eine sehr primitive Schnittstelle (Sie können nur Byte-Arrays mit ihm erhalten und speichern und nur wenige Erweiterungsmethoden. Weitere Informationen finden Sie unter this.
Sie können entweder IDistributedCache
oder IMemoryCache
in Ihre Steuerung oder Ihren Service injizieren und sie wie gewohnt verwenden. Sie zu benutzen ist ziemlich einfach, sie sind ein bisschen wie Wörterbücher. Hier ein Beispiel für die IMemoryCache
:
public class MyService : IMyService
{
private readonly IDatabase database;
private readonly IMemoryCache memoryCache;
public MyService(IDatabase database, IMemoryCache memoryCache)
{
this.database = database;
this.memoryCache = memoryCache;
}
public string GetCachedObject()
{
string cachedObject;
if (!this.memoryCache.TryGetValue("Key", out cachedObject))
{
cachedObject = this.database.GetObject();
this.memoryCache.Set(
"Key",
cachedObject,
new MemoryCacheEntryOptions()
{
SlidingExpiration = TimeSpan.FromHours(1)
});
}
return cachedObject;
}
}
Diese Beispiele sind alle Konsolen-Anwendungen. Ich glaube nicht, dass @sam360 nach – DevHawk