diff --git a/Extensions.Caching.PostgreSql/DatabaseExpiredItemsRemoverLoop.cs b/Extensions.Caching.PostgreSql/DatabaseExpiredItemsRemoverLoop.cs index 3ac2c6a..9f00dee 100644 --- a/Extensions.Caching.PostgreSql/DatabaseExpiredItemsRemoverLoop.cs +++ b/Extensions.Caching.PostgreSql/DatabaseExpiredItemsRemoverLoop.cs @@ -16,6 +16,7 @@ internal sealed class DatabaseExpiredItemsRemoverLoop : IDatabaseExpiredItemsRem private readonly IDatabaseOperations _databaseOperations; private readonly CancellationTokenSource _cancellationTokenSource; private readonly ISystemClock _systemClock; + private readonly bool _disabled; public DatabaseExpiredItemsRemoverLoop( IOptions options, @@ -24,6 +25,12 @@ public DatabaseExpiredItemsRemoverLoop( { var cacheOptions = options.Value; + if ((_disabled = cacheOptions.Disabled) == true) + { + //No need to configure anything + return; + } + if (cacheOptions.ExpiredItemsDeletionInterval.HasValue && cacheOptions.ExpiredItemsDeletionInterval.Value < MinimumExpiredItemsDeletionInterval) { @@ -41,6 +48,11 @@ public DatabaseExpiredItemsRemoverLoop( public void Start() { + if (_disabled) + { + return; + } + Task.Run(DeleteExpiredCacheItems); } diff --git a/Extensions.Caching.PostgreSql/PostGreSqlCacheOptions.cs b/Extensions.Caching.PostgreSql/PostGreSqlCacheOptions.cs index 464287b..bec5512 100644 --- a/Extensions.Caching.PostgreSql/PostGreSqlCacheOptions.cs +++ b/Extensions.Caching.PostgreSql/PostGreSqlCacheOptions.cs @@ -42,6 +42,11 @@ public class PostgreSqlCacheOptions : IOptions /// public TimeSpan DefaultSlidingExpiration { get; set; } = TimeSpan.FromMinutes(20); + /// + /// If set to true this instance of the cache will not remove expired items. + /// + public bool Disabled { get; set; } + PostgreSqlCacheOptions IOptions.Value => this; } }