CSRedisSetup.cs 1.4 KB

123456789101112131415161718192021222324252627282930313233343536373839
  1. using CSRedis;
  2. using Furion;
  3. using Microsoft.Extensions.Caching.Distributed;
  4. using Microsoft.Extensions.Caching.Memory;
  5. using Microsoft.Extensions.Caching.Redis;
  6. using Microsoft.Extensions.DependencyInjection;
  7. using Microsoft.Extensions.Options;
  8. namespace Admin.NET.Core
  9. {
  10. public static class CSRedisSetup
  11. {
  12. /// <summary>
  13. /// CSRedis初始化
  14. /// </summary>
  15. /// <param name="services"></param>
  16. public static void AddCSRedisSetup(this IServiceCollection services)
  17. {
  18. services.AddSingleton<IDistributedCache>(provider =>
  19. {
  20. var cacheOptions = App.GetOptions<CacheOptions>();
  21. if (cacheOptions.CacheType == CacheTypeEnum.RedisCache.ToString())
  22. {
  23. var redisStr = $"{cacheOptions.RedisConnectionString},prefix={cacheOptions.InstanceName}";
  24. var redis = new CSRedisClient(redisStr);
  25. RedisHelper.Initialization(redis);
  26. return new CSRedisCache(redis);
  27. }
  28. else // 默认使用内存
  29. {
  30. services.AddDistributedMemoryCache();
  31. IOptions<MemoryDistributedCacheOptions> options = provider.GetService<IOptions<MemoryDistributedCacheOptions>>();
  32. return new MemoryDistributedCache(options);
  33. }
  34. });
  35. }
  36. }
  37. }