コード例 #1
0
ファイル: CachingUtils.cs プロジェクト: shshshdy/Datory
        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)
                                      ));
        }