Files
parr_api/PARR.DAL/CacheServices/RedisCacheService.cs
2023-11-30 16:18:14 +10:00

64 lines
1.6 KiB
C#

using Microsoft.Extensions.Caching.Distributed;
using System.Text.Json;
namespace PARR.DAL.CacheServices
{
internal class RedisCacheService : IRedisCacheService
{
private readonly IDistributedCache cache;
public RedisCacheService(IDistributedCache cache)
{
this.cache = cache;
}
public async Task<T?> GetCachedDataAsync<T>(string key)
{
var jsonData = await cache.GetStringAsync(key);
if (jsonData == null)
return default(T);
return JsonSerializer.Deserialize<T>(jsonData);
}
public T? GetCachedData<T>(string key)
{
var jsonData = cache.GetString(key);
if (jsonData == null)
return default(T);
return JsonSerializer.Deserialize<T>(jsonData);
}
public void SetCachedData<T>(string key, T data, TimeSpan cacheDuration)
{
var options = new DistributedCacheEntryOptions
{
AbsoluteExpirationRelativeToNow = cacheDuration
};
var jsonData = JsonSerializer.Serialize(data);
cache.SetString(key, jsonData, options);
}
public async Task SetCachedDataAsync<T>(string key, T data, TimeSpan cacheDuration)
{
var options = new DistributedCacheEntryOptions
{
AbsoluteExpirationRelativeToNow = cacheDuration
};
var jsonData = JsonSerializer.Serialize(data);
await cache.SetStringAsync(key, jsonData, options);
}
}
}