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. 示例场景:缓存数据读取与回源逻辑
使用示例流程如下:
- 调用缓存服务尝试获取数据。
- 如果缓存命中,立即返回。
- 否则从数据库或外部接口获取数据,并同时写入缓存,供下次快速读取。
该模式适用于热点数据、高延迟数据库访问或第三方 API 调用场景,显著减少延迟与外部依赖。
6. 缓存策略与有效期管理
设置合适的绝对过期(TTL)与滑动过期,有助于防止缓存雪崩与频繁缓存穿透。结合 DistributedCacheEntryOptions 可灵活配置缓存生命周期。
通过以上实战示例,你已掌握从 Redis 环境部署、客户端配置、连接封装、缓存操作、服务结构设计、到缓存策略的 .NET C# Redis 实践流程。最终你可构建简洁高效的缓存系统,满足性能优化和可维护性的需求。