C# 使用Redis

发布于 27 天前  63 次阅读


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>>("键名") 获取
一个练习时长还差一年半的切图仔,有需求可联系 QQ:963827384
最后更新于 2025-06-19