Skip to content

Commit fd027d1

Browse files
committed
Add configurable expirations
1 parent 0bbef85 commit fd027d1

File tree

4 files changed

+23
-3
lines changed

4 files changed

+23
-3
lines changed

src/ArchitectNow.Caching/CacheKeeper.cs

Lines changed: 12 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,18 @@ public CacheKeeper(ILogger<CacheKeeper<T>> log, IOptions<RedisOptions> redisOpti
2727
return;
2828
}
2929

30+
var inMemoryExpirationInSeconds = cachingOptions.Value.InMemoryExpirationInSeconds < 0
31+
? CachingConstants.InMemoryDefaultExpirationInSeconds
32+
: cachingOptions.Value.InMemoryExpirationInSeconds;
33+
34+
var redisExpirationInSeconds = redisOptions.Value.ExpirationInSeconds < 0
35+
? CachingConstants.RedisDefaultExpirationInSeconds
36+
: redisOptions.Value.ExpirationInSeconds;
37+
3038
_inMemory = CacheFactory.Build<T>(
3139
s => s
3240
.WithDictionaryHandle()
33-
.WithExpiration(ExpirationMode.Sliding, TimeSpan.FromSeconds(5)));
41+
.WithExpiration(ExpirationMode.Sliding, TimeSpan.FromSeconds(inMemoryExpirationInSeconds)));
3442

3543
var multiplexer = Create();
3644

@@ -65,10 +73,11 @@ public CacheKeeper(ILogger<CacheKeeper<T>> log, IOptions<RedisOptions> redisOpti
6573
s
6674
.WithJsonSerializer(jsonSerializerSettings, jsonSerializerSettings)
6775
.WithDictionaryHandle()
68-
.WithExpiration(ExpirationMode.Absolute, TimeSpan.FromMinutes(30))
76+
.WithExpiration(ExpirationMode.Absolute, TimeSpan.FromSeconds(inMemoryExpirationInSeconds))
6977
.And
7078
.WithRedisConfiguration("redis", multiplexer)
71-
.WithRedisCacheHandle("redis");
79+
.WithRedisCacheHandle("redis")
80+
.WithExpiration(ExpirationMode.Absolute, TimeSpan.FromSeconds(redisExpirationInSeconds));
7281
});
7382
}
7483

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
namespace ArchitectNow.Caching
2+
{
3+
public class CachingConstants
4+
{
5+
public const int InMemoryDefaultExpirationInSeconds = 60;
6+
public const int RedisDefaultExpirationInSeconds = 1800;
7+
}
8+
}

src/ArchitectNow.Caching/CachingOptions.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,5 +3,7 @@
33
class CachingOptions
44
{
55
public bool Enabled { get; set; } = false;
6+
7+
public int InMemoryExpirationInSeconds { get; set; } = CachingConstants.InMemoryDefaultExpirationInSeconds;
68
}
79
}

src/ArchitectNow.Caching/RedisOptions.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,5 +4,6 @@ class RedisOptions
44
{
55
public string ConnectionString { get; set; }
66
public bool Enabled { get; set; }
7+
public int ExpirationInSeconds { get; set; } = CachingConstants.RedisDefaultExpirationInSeconds;
78
}
89
}

0 commit comments

Comments
 (0)