在C#中连接Redis数据库,最常用的方式是使用 StackExchange.Redis 客户端库。它是.NET平台下最流行、性能优异的Redis客户端,支持同步和异步操作,适用于各种应用场景。
1. 安装 StackExchange.Redis NuGet 包
在项目中使用前,需要先安装对应的NuGet包:
Install-Package StackExchange.Redis可以通过 Visual Studio 的 NuGet 包管理器或 .NET CLI 完成安装。
2. 建立 Redis 连接
StackExchange.Redis 使用 ConnectionMultiplexer 类来管理与Redis服务器的连接。这个对象是线程安全的,建议在整个应用程序中只创建一次,重复使用。
示例代码:
using StackExchange.Redis; // 创建连接配置 var configuration = new ConfigurationOptions { EndPoints = { "localhost:6379" }, // Redis 地址 ConnectTimeout = 5000, // 连接超时(毫秒) SyncTimeout = 5000, // 同步操作超时 AbortOnConnectFail = false // 如果连接失败是否抛出异常 }; // 获取连接实例(推荐单例模式) ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(configuration); // 获取数据库对象(Redis支持多个数据库,db0-db15) IDatabase db = redis.GetDatabase(); // 默认使用 db03. 常用数据操作示例
通过 IDatabase 接口可以执行常见的Redis命令。
字符串操作(String)
// 设置值 db.StringSet("name", "Alice"); // 获取值 string name = db.StringGet("name"); Console.WriteLine(name); // 输出: Alice // 设置带过期时间的键 db.StringSet("token", "abc123", TimeSpan.FromMinutes(10));哈希操作(Hash)
// 存储用户信息 db.HashSet("user:1001", new HashEntry[] { new HashEntry("name", "Bob"), new HashEntry("age", "25") }); // 获取所有字段 var userData = db.HashGetAll("user:1001"); foreach (var entry in userData) { Console.WriteLine($"{entry.Name}: {entry.Value}"); }列表操作(List)
// 向列表左端插入元素 db.ListLeftPush("tasks", "task1"); db.ListLeftPush("tasks", "task2"); // 从右端弹出元素 string task = db.ListRightPop("tasks"); Console.WriteLine(task); // 输出: task1发布/订阅(Pub/Sub)
// 订阅频道 ISubscriber sub = redis.GetSubscriber(); sub.Subscribe("chat", (channel, message) => { Console.WriteLine($"收到消息: {message}"); }); // 发布消息(可在另一个客户端或线程中) sub.Publish("chat", "Hello Redis!");4. 连接管理与最佳实践
ConnectionMultiplexer 是重量级对象,应避免频繁创建和销毁。
使用静态单例方式维护一个共享的 ConnectionMultiplexer 实例 监听连接事件以处理断线重连 生产环境建议配置哨兵或集群模式简单单例模式示例:
public class RedisHelper { private static readonly Lazy之后在代码中直接使用:RedisHelper.Db.StringSet(...)
基本上就这些。StackExchange.Redis 功能强大,支持事务、脚本、管道等高级特性,适合大多数C#项目对接Redis的需求。
