59 lines
1.6 KiB
C#
59 lines
1.6 KiB
C#
using LY.App.Extensions.DI;
|
|
using StackExchange.Redis;
|
|
using System.Text.Json;
|
|
|
|
namespace LY.App.Common.Redis
|
|
{
|
|
/// <summary>
|
|
/// redis 连接服务
|
|
/// </summary>
|
|
public class RedisService
|
|
{
|
|
private readonly IDatabase _db;
|
|
|
|
/// <summary>
|
|
/// 构造函数
|
|
/// </summary>
|
|
/// <param name="connectionString"></param>
|
|
public RedisService(string connectionString)
|
|
{
|
|
var redis = ConnectionMultiplexer.Connect(connectionString);
|
|
_db = redis.GetDatabase();
|
|
}
|
|
|
|
/// <summary>
|
|
/// 泛型存储数据到 Redis
|
|
/// </summary>
|
|
public async Task<bool> SetAsync<T>(string key, T value, TimeSpan? expiry = null)
|
|
{
|
|
string jsonData = JsonSerializer.Serialize(value);
|
|
return await _db.StringSetAsync(key, jsonData, expiry);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 泛型获取数据
|
|
/// </summary>
|
|
public async Task<T?> GetAsync<T>(string key)
|
|
{
|
|
string jsonData = await _db.StringGetAsync(key);
|
|
return jsonData is not null ? JsonSerializer.Deserialize<T>(jsonData) : default;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 删除 Key
|
|
/// </summary>
|
|
public async Task<bool> DeleteAsync(string key)
|
|
{
|
|
return await _db.KeyDeleteAsync(key);
|
|
}
|
|
|
|
/// <summary>
|
|
/// 检查 Key 是否存在
|
|
/// </summary>
|
|
public async Task<bool> ExistsAsync(string key)
|
|
{
|
|
return await _db.KeyExistsAsync(key);
|
|
}
|
|
}
|
|
}
|