public static SitecoreCachingConfigBuilder SetDefaultMemoryStoreSettings( this SitecoreCachingConfigBuilder configBuilder, Action <MemoryCacheStoreOptions> configureStore) { configBuilder.Services.Configure <MemoryCacheStoreOptions>(configureStore); return(configBuilder); }
public static SitecoreCachingConfigBuilder AddRedisStore( this SitecoreCachingConfigBuilder configBuilder, string storeName, string redisConfiguration, string redisInstanceName) { AddRedisStore(configBuilder, storeName, redisConfiguration, redisInstanceName, sp => sp.GetRequiredService <ICacheStoreSerializer>()); return(configBuilder); }
public static SitecoreCachingConfigBuilder AddRedisStore <TSerializer>( this SitecoreCachingConfigBuilder configBuilder, string storeName, string redisConfiguration, string redisInstanceName) where TSerializer : class, ICacheStoreSerializer { AddRedisStore(configBuilder, storeName, redisConfiguration, redisInstanceName, sp => ActivatorUtilities.CreateInstance <TSerializer>(sp)); return(configBuilder); }
public static SitecoreCachingConfigBuilder AddMemoryStore( this SitecoreCachingConfigBuilder configBuilder, string storeName, Action <MemoryCacheStoreOptions> configureStore = null) { if (configureStore != null) { configBuilder.Services.ConfigureMatching <MemoryCacheStoreOptions>(configureStore, storeName); } configBuilder.Services.AddSingleton <ICacheStore>(sp => { return(ActivatorUtilities.CreateInstance <MemoryCacheStore>(sp, storeName)); }); return(configBuilder); }
/// <summary> /// Adds the Sitecore caching system to the service collection. Only to be called once per application. /// This function will setup a cache memory provider that will be used by all caches (by default) unless they are configured to use other providers. /// </summary> public static ISitecoreServicesConfiguration Caching(this ISitecoreServicesConfiguration builder, Action <SitecoreCachingConfigBuilder> configure = null) { builder.Services.AddMatchingOptions(); builder.Services.TryAdd(ServiceDescriptor.Singleton <ICacheManager, CacheManager>()); builder.Services.TryAdd(ServiceDescriptor.Singleton(typeof(ICache <>), typeof(Cache <>))); builder.Services.TryAdd(ServiceDescriptor.Singleton <ICacheStoreManager, CacheStoreManager>()); builder.Services.TryAdd(ServiceDescriptor.Singleton <ICacheFactory, CacheFactory>()); builder.Services.TryAddSingleton <ICacheStoreSerializer, DefaultCacheStoreSerializer>(); // Ensure default options are set if this is the first call in startup. builder.Services.TryAdd(ServiceDescriptor.Transient <IConfigureMatchingOptions <CacheOptions>, DefaultCacheOptionsSetup>()); var configBuilder = new SitecoreCachingConfigBuilder(builder); configure?.Invoke(configBuilder); return(builder); }
private static void AddRedisStore <TSerializer>( SitecoreCachingConfigBuilder configBuilder, string storeName, string redisConfiguration, string redisInstanceName, Func <IServiceProvider, TSerializer> serializerFactory) where TSerializer : class, ICacheStoreSerializer { Condition.Requires(storeName, nameof(storeName)).IsNotNullOrEmpty(); Condition.Requires(redisConfiguration, nameof(redisConfiguration)).IsNotNull(); Condition.Requires(redisInstanceName, nameof(redisInstanceName)).IsNotNull(); configBuilder.Services.ConfigureMatching <RedisCacheOptions>(options => { options.Configuration = redisConfiguration; options.InstanceName = redisInstanceName; }, storeName); configBuilder.Services.AddSingleton <ICacheStore>(sp => { return(ActivatorUtilities.CreateInstance <RedisCacheStore>(sp, serializerFactory(sp), storeName)); }); }