public static IApiRateLimiterUserIdServiceRegistration AddMemoryCache(
            this IApiRateLimiterUserIdServiceRegistration servicef)
        {
            var service = (ApiRateLimiterUserIdServiceRegistration)servicef;

            service.ServiceCollection.AddSingleton <IAPIRateLimiterUserIdStorageProvider, MemoryCacheProvider>();
            return(servicef);
        }
        public static IApiRateLimiterUserIdServiceRegistrationBackupProvider AddRedisCacheProvider(this IApiRateLimiterUserIdServiceRegistration servicef,
                                                                                                   Func <string> connectionString)
        {
            var    service = (ApiRateLimiterUserIdServiceRegistration)servicef;
            string redisConnectionString = connectionString();
            var    options = new RedisWithBackupStorageOptions
            {
                Prefix = service.Options.CachePrefix,
                RedisConnectionString = redisConnectionString
            };

            service.ServiceCollection.AddSingleton(options);
            service.ServiceCollection.AddSingleton <IAPIRateLimiterUserIdStorageProvider, RedisWithBackupStorage>();
            return(service);
        }