/// <summary> /// Using IMemoryCache as a cache service. /// </summary> public EFEasyCachingCoreProvider( IOptions <EFCoreSecondLevelCacheSettings> cacheSettings, IServiceProvider serviceProvider, IReaderWriterLockProvider readerWriterLockProvider) { if (cacheSettings == null) { throw new ArgumentNullException(nameof(cacheSettings)); } if (serviceProvider == null) { throw new ArgumentNullException(nameof(serviceProvider)); } _cacheSettings = cacheSettings.Value; _readerWriterLockProvider = readerWriterLockProvider ?? throw new ArgumentNullException(nameof(readerWriterLockProvider)); if (_cacheSettings.IsHybridCache) { var hybridFactory = serviceProvider.GetRequiredService <IHybridProviderFactory>(); _easyCachingProvider = hybridFactory.GetHybridCachingProvider(_cacheSettings.ProviderName); } else { var providerFactory = serviceProvider.GetRequiredService <IEasyCachingProviderFactory>(); _easyCachingProvider = providerFactory.GetCachingProvider(_cacheSettings.ProviderName); } }
/// <summary> /// Using IRedisDbCache as a cache service. /// </summary> public EFRedisCacheServiceProvider( IRedisDbCache redisDbCache, IReaderWriterLockProvider readerWriterLockProvider) { _redisDbCache = redisDbCache; _readerWriterLockProvider = readerWriterLockProvider; }
/// <summary> /// Using IMemoryCache as a cache service. /// </summary> public MyEFCacheManagerCoreProvider(ICacheManager <ISet <string> > dependenciesCacheManager, ICacheManager <EFCachedData> valuesCacheManager, IReaderWriterLockProvider readerWriterLockProvider) { _readerWriterLockProvider = readerWriterLockProvider; _dependenciesCacheManager = dependenciesCacheManager ?? throw new ArgumentNullException(nameof(dependenciesCacheManager), "Please register the `ICacheManager`."); _valuesCacheManager = valuesCacheManager ?? throw new ArgumentNullException(nameof(valuesCacheManager), "Please register the `ICacheManager`."); _dependenciesCacheManager.OnRemoveByHandle += (sender, args) => ClearAllCachedEntries(); }
/// <summary> /// Using IMemoryCache as a cache service. /// </summary> public EFMemoryCacheServiceProvider( IMemoryCache memoryCache, IMemoryCacheChangeTokenProvider signal, IReaderWriterLockProvider readerWriterLockProvider) { _memoryCache = memoryCache; _signal = signal; _readerWriterLockProvider = readerWriterLockProvider; }
/// <summary> /// Using IMemoryCache as a cache service. /// </summary> public EFEasyCachingCoreProvider( IOptions <EFCoreSecondLevelCacheSettings> cacheSettings, IEasyCachingProviderFactory easyCachingProviderFactory, IReaderWriterLockProvider readerWriterLockProvider) { _cacheSettings = cacheSettings?.Value; _readerWriterLockProvider = readerWriterLockProvider; _easyCachingProviderFactory = easyCachingProviderFactory ?? throw new ArgumentNullException("Please register the `EasyCaching.Core`."); _easyCachingProvider = _easyCachingProviderFactory.GetCachingProvider(_cacheSettings.ProviderName); }
/// <summary> /// Using IMemoryCache as a cache service. /// </summary> public MyEFCacheManagerCoreProvider(ICacheManager <ISet <string> > dependenciesCacheManager, ICacheManager <EFCachedData> valuesCacheManager, IReaderWriterLockProvider readerWriterLockProvider) { _readerWriterLockProvider = readerWriterLockProvider; _dependenciesCacheManager = dependenciesCacheManager ?? throw new ArgumentNullException(nameof(dependenciesCacheManager), "Please register the `ICacheManager`."); _valuesCacheManager = valuesCacheManager ?? throw new ArgumentNullException(nameof(valuesCacheManager), "Please register the `ICacheManager`."); // Occurs when an item was removed by the cache handle due to expiration or e.g. memory pressure eviction. // Without _dependenciesCacheManager items, we can't invalidate cached items on Insert/Update/Delete. // So to prevent stale reads, we have to clear all cached data in this case. _dependenciesCacheManager.OnRemoveByHandle += (sender, args) => ClearAllCachedEntries(); }
/// <summary> /// Using IMemoryCache as a cache service. /// </summary> public EFEasyCachingCoreProvider( IOptions <EFCoreSecondLevelCacheSettings> cacheSettings, IServiceProvider serviceProvider, IReaderWriterLockProvider readerWriterLockProvider) { _cacheSettings = cacheSettings?.Value; _readerWriterLockProvider = readerWriterLockProvider; if (_cacheSettings.IsHybridCache) { var hybridFactory = serviceProvider.GetRequiredService <IHybridProviderFactory>(); _easyCachingProvider = hybridFactory.GetHybridCachingProvider(_cacheSettings.ProviderName); } else { var providerFactory = serviceProvider.GetRequiredService <IEasyCachingProviderFactory>(); _easyCachingProvider = providerFactory.GetCachingProvider(_cacheSettings.ProviderName); } }