123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- using System.Text.Json;
- using System.Text.Json.Serialization;
- using CacheManager.Core;
- using Microsoft.Extensions.DependencyInjection;
- using XF.Domain.Cache;
- namespace Hotline.CacheManager
- {
- public static class StartupExtensions
- {
- public static IServiceCollection AddCache(this IServiceCollection services, Action<CacheOptions> action)
- {
- var options = new CacheOptions();
- action(options);
- services.AddCacheManagerConfiguration(cfg =>
- {
- cfg
- .WithUpdateMode(CacheUpdateMode.Up)
- .WithMicrosoftMemoryCacheHandle()
- .And
- .WithRedisConfiguration("redis", options.ConnectionString, 1)
- // .WithRedisConfiguration("redis", d =>
- //{
- // d.WithDatabase(0).WithEndpoint("redis.fengwo.com", 6380);
- //})
- .WithSerializer(typeof(SystemTextJsonSerializer), new JsonSerializerOptions
- {
- PropertyNamingPolicy = JsonNamingPolicy.CamelCase,
- DictionaryKeyPolicy = JsonNamingPolicy.CamelCase,
- DefaultIgnoreCondition = JsonIgnoreCondition.WhenWritingNull
- })
- .WithRedisBackplane("redis")
- .WithRedisCacheHandle("redis", true);
- //cfg.AddCacheEvents(services);
- })
- .AddCacheManager()
- .Configure(action)
- .AddSingleton(typeof(ITypedCache<>), typeof(DefaultTypedCache<>))
- ;
- return services;
- }
- }
- public class CacheOptions
- {
- public string ConnectionString { get; set; }
- public int Port { get; set; }
- public string Prefix { get; set; }
- public bool EnableKeyspaceNotifications { get; set; }
- }
- }
|