CSRedisSetup.cs 1.2 KB

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