【发布时间】:2018-10-13 21:37:38
【问题描述】:
我想使用EF Second Level Cache,并将ASP.NET MVC 项目中EF 的默认缓存提供程序更改为使用Redis 而不是其InMemory 缓存提供程序。
我有以下 MVC Core 示例代码:
// Add Redis cache service provider
var jss = new JsonSerializerSettings
{
NullValueHandling = NullValueHandling.Ignore,
ReferenceLoopHandling = ReferenceLoopHandling.Ignore
};
const string redisConfigurationKey = "redis";
services.AddSingleton(typeof(ICacheManagerConfiguration),
new CacheManager.Core.ConfigurationBuilder()
.WithJsonSerializer(serializationSettings: jss, deserializationSettings: jss)
.WithUpdateMode(CacheUpdateMode.Up)
.WithRedisConfiguration(redisConfigurationKey, config =>
{
config.WithAllowAdmin()
.WithDatabase(0)
.WithEndpoint("localhost", 6379);
})
.WithMaxRetries(100)
.WithRetryTimeout(50)
.WithRedisCacheHandle(redisConfigurationKey)
.WithExpiration(ExpirationMode.Absolute, TimeSpan.FromMinutes(10))
.Build());
services.AddSingleton(typeof(ICacheManager<>), typeof(BaseCacheManager<>));
我的项目不是
MVC Core,它是MVC。我也使用StructureMaps作为 国际奥委会。
现在我有 2 个问题:
- 我应该如何在我的项目中配置
EF以使用Redis作为它的二级缓存 Provider(我正在使用this 包)? - 我可以在我的计算机上的单独项目中以这种方式使用缓存中保存的数据 (
Redis)(在多个应用程序之间共享 MVC 应用程序的缓存)吗?
【问题讨论】:
标签: c# asp.net-mvc entity-framework redis structuremap