1. 安装 StackExchange.Redis
2.appsetting.JSON配置
"Redis": {
"Configuration": "address:端口,password=密码,connectTimeout=连接超时时间,abortConnect=false",
"InstanceName": "MyApiCache:" // 缓存键前缀
}
3.注入 program.cs
builder.Services.AddSingleton<IConnectionMultiplexer>(sp => ConnectionMultiplexer.Connect(builder.Configuration["Redis:Configuration"]))
4.封装 建立 redisTools(注意,使用该方法键需要为能够正确序列化的值,否则会报错)
public interface IRedisCacheService
{
Task SetAsync<T>(string key, T value, TimeSpan? expiry = null);
Task<T?> GetAsync<T>(string key);
}
public class RedisCacheService : IRedisCacheService
{
private readonly IDatabase _redisDb;
public RedisCacheService(IConnectionMultiplexer redis)
=> _redisDb = redis.GetDatabase();
public async Task SetAsync<T>(string key, T value, TimeSpan? expiry = null)
{
var serialized = JsonSerializer.Serialize(value);
await _redisDb.StringSetAsync(key, serialized, expiry);
}
public async Task<T?> GetAsync<T>(string key)
{
var data = await _redisDb.StringGetAsync(key);
//Console.WriteLine(data);
return data.HasValue
? JsonSerializer.Deserialize<T>(data!)
: default;
}
}
5.使用
await _cache.GetAsync<List<泛型 T>>("键名") 获取
Comments NOTHING