* Added Redis state storage implementation

This commit is contained in:
2026-03-09 03:49:03 +04:00
parent 88bd12aadd
commit da090627ff
5 changed files with 80 additions and 1 deletions
@@ -0,0 +1,35 @@
using StackExchange.Redis;
using System.Text.Json;
using Telegrator.Core.States;
namespace Telegrator.States;
public class RedisStateStorage(IConnectionMultiplexer redis) : IStateStorage
{
private readonly IDatabase _db = redis.GetDatabase();
/// <inheritdoc/>
public async Task SetAsync<T>(string key, T state, CancellationToken cancellationToken)
{
string json = JsonSerializer.Serialize(state);
await _db.StringSetAsync(key, json);
}
/// <inheritdoc/>
public async Task<T?> GetAsync<T>(string key, CancellationToken cancellationToken) where T : default
{
RedisValue json = await _db.StringGetAsync(key);
string? jsonStr = json;
if (jsonStr is null)
return default;
return JsonSerializer.Deserialize<T?>(json: jsonStr);
}
/// <inheritdoc/>
public async Task DeleteAsync(string key, CancellationToken cancellationToken = default)
{
throw new NotImplementedException();
}
}