在C#中使用Redis可通过StackExchange.Redis库实现,以下是核心实现方式及注意事项:
一、安装与配置
1. 安装NuGet包
bash
dotnet add package StackExchange.Redis
2. 连接Redis服务器
var conn = ConnectionMultiplexer.Connect("localhost:6379");
IDatabase db = conn.GetDatabase();
三、高级功能(基于)
1. 发布/订阅
// 订阅
ISubscriber sub = conn.GetSubscriber();
sub.Subscribe("channel", (channel, message) => Console.WriteLine(message));
// 发布
sub.Publish("channel", "Hello Redis!");
2. 事务
var trans = db.CreateTransaction();
trans.StringSetAsync("key1", "value1");
trans.StringSetAsync("key2", "value2");
bool success = trans.Execute();
3. 键过期
db.StringSet("key", "value", TimeSpan.FromSeconds(10));
4. 集群模式
var conn = ConnectionMultiplexer.Connect("redis1:6379,redis2:6379");
四、注意事项
1. 连接池管理
- 默认连接池大小为100,可通过ConnectTimeout和SyncTimeout调整超时时间。
- 使用ConnectionMultiplexer的单例模式避免频繁创建连接。
2. 错误处理
- 捕获RedisConnectionException处理网络中断。
- 使用RetryPolicy配置重试策略。
3. 性能优化
- 批量操作(如HashGet获取多个字段)提升效率。
- 使用管道(Pipeline)减少网络往返:
db.Pipeline
.StringSetAsync("key1", "v1")
.StringSetAsync("key2", "v2")
.Execute();
五、推荐实践
- 监控:通过IServer接口监控服务器状态(如GetMemoryStatistics())。
- 缓存策略:结合LRU淘汰机制设计合理的缓存键值。
- 安全:生产环境建议启用密码验证(AllowAdmin=true)。