private static async Task <ICacheManager <object> > CreateAsync(IRedis redis) { if (redis != null && !string.IsNullOrEmpty(redis.ConnectionString)) { var(isConnectionWorks, _) = await redis.IsConnectionWorksAsync(); if (isConnectionWorks) { return(CacheFactory.Build(settings => { settings .WithMicrosoftMemoryCacheHandle() .WithExpiration(ExpirationMode.None, TimeSpan.Zero) .And .WithRedisConfiguration("redis", config => { if (!string.IsNullOrEmpty(redis.Password)) { config.WithPassword(redis.Password); } if (redis.AllowAdmin) { config.WithAllowAdmin(); } config .WithDatabase(redis.Database) .WithEndpoint(redis.Host, redis.Port); }) .WithMaxRetries(1000) .WithRetryTimeout(100) .WithJsonSerializer() .WithRedisBackplane("redis") .WithRedisCacheHandle("redis", true); })); } } return(CacheFactory.Build(settings => settings .WithMicrosoftMemoryCacheHandle() .WithExpiration(ExpirationMode.None, TimeSpan.Zero) )); }