.NET C# Redis 示例实战教程:从安装到缓存实现全流程

Redis 是一款高速的内存键值数据库,广泛应用于缓存、会话存储、消息队列等场景。在 .NET C# 应用中整合 Redis 可以显著提升响应能力与系统性能。本文以实战示例形式,从环境准备到功能实现,全流程引导你快速上手 .NET C# 与 Redis 的对接开发。

1. 环境准备:安装 Redis 与依赖

首先,在本地或服务器上部署 Redis。可以通过 Docker 快速启动 Redis 容器,例如运行 docker run -d --name redis -p 6379:6379 redis 即可启动一个 Redis 实例。

也可以直接安装Redis,以Redis Windows版为例,可以从GitHub直接下载:https://github.com/MicrosoftArchive/redis/tags。如果无法访问GitHub,请使用科学上外网工具,例如 Dove加速器、Gatern加速器 等。

在 .NET 项目中,通过 NuGet 安装 StackExchange.Redis 客户端依赖,用于连接 Redis 服务。

2. 构建 Redis 连接:单例方式推荐使用

推荐采用 ConnectionMultiplexer 单例来复用连接并提升性能。可以通过静态 Lazy<ConnectionMultiplexer> 模式实现连接延迟初始化,并确保整个应用共用一个连接实例。

public static class RedisConnector
{
    private static readonly Lazy<ConnectionMultiplexer> lazyConn = new(() =>
        ConnectionMultiplexer.Connect("localhost:6379"));
    public static ConnectionMultiplexer Connection => lazyConn.Value;
}

3. 基本缓存操作:写入与读取示例

建立连接后,即可获取 Redis 数据库实例,并进行缓存操作示例:

var db = RedisConnector.Connection.GetDatabase();
db.StringSet("sample:key", "Hello Redis!");
var value = db.StringGet("sample:key");
Console.WriteLine($"Cached Value: {value}");

4. 封装存取逻辑:结构化缓存服务层

为了避免重复并提升可维护性,可通过 IDistributedCache 接口与扩展方式封装 Redis 缓存逻辑。例如:

services.AddDistributedRedisCache(options =>
{
    options.Configuration = Configuration.GetConnectionString("Redis");
    options.InstanceName = "AppPrefix:";
});

自定义缓存服务实现:

public class CacheService<T>
{
    private readonly IDistributedCache _cache;
    private readonly DistributedCacheEntryOptions _opts;
    public CacheService(IDistributedCache cache)
    {
        _cache = cache;
        _opts = new() {
          AbsoluteExpirationRelativeToNow = TimeSpan.FromMinutes(5),
          SlidingExpiration = TimeSpan.FromMinutes(2)
        };
    }
    public async Task SetAsync(string key, T item) => 
        await _cache.SetStringAsync(key, JsonConvert.SerializeObject(item), _opts);
    public async Task<T> GetAsync(string key)
    {
        var str = await _cache.GetStringAsync(key);
        return str == null ? default : JsonConvert.DeserializeObject<T>(str);
    }
}

5. 示例场景:缓存数据读取与回源逻辑

使用示例流程如下:

  1. 调用缓存服务尝试获取数据。
  2. 如果缓存命中,立即返回。
  3. 否则从数据库或外部接口获取数据,并同时写入缓存,供下次快速读取。

该模式适用于热点数据、高延迟数据库访问或第三方 API 调用场景,显著减少延迟与外部依赖。

6. 缓存策略与有效期管理

设置合适的绝对过期(TTL)与滑动过期,有助于防止缓存雪崩与频繁缓存穿透。结合 DistributedCacheEntryOptions 可灵活配置缓存生命周期。

通过以上实战示例,你已掌握从 Redis 环境部署、客户端配置、连接封装、缓存操作、服务结构设计、到缓存策略的 .NET C# Redis 实践流程。最终你可构建简洁高效的缓存系统,满足性能优化和可维护性的需求。

评论