CSRedisSetup.cs 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  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. services.AddSingleton(redis);
  26. RedisHelper.Initialization(redis);
  27. return new CSRedisCache(redis);
  28. }
  29. else // 默认使用内存
  30. {
  31. services.AddDistributedMemoryCache();
  32. IOptions<MemoryDistributedCacheOptions> options = provider.GetService<IOptions<MemoryDistributedCacheOptions>>();
  33. return new MemoryDistributedCache(options);
  34. }
  35. });
  36. }
  37. }
  38. }