企服版框架redis sdk
License
—
Deps
2
Install Size
—
Vulns
✓ 0
Published
Feb 26, 2026
$ dotnet add package TJC.Cyclops.RedisCyclops.Redis 是 Cyclops.Framework 中的 Redis 客户端集成组件,提供了强大而灵活的 Redis 操作封装。该组件支持多种 Redis 部署模式(单实例、哨兵、集群),并封装了缓存、队列、分布式锁、发布订阅等常用功能,简化了 Redis 在 .NET 应用程序中的使用。
// 连接管理核心实现位于 RedisClient 类
// RedisCache 类提供完整的缓存功能实现
// RedisQueue<T> 类实现了类型化的队列操作
// RedisDistributedLock 类实现了安全的分布式锁机制
// RedisProducer 和 RedisConsumer 类实现了流操作
// RedisPublisher 和 RedisSubscriber 类实现了发布订阅功能
// RedisKeyExpireListener 类实现了键过期监听
将 Cyclops.Redis 项目引用添加到您的 .NET 项目中。
在应用程序配置文件中添加 Redis 连接配置:
{
"RedisOptions": {
"Type": "Instance", // 可选值:Instance, Sentinel, Cluster
"Masters": "localhost:6379",
"Slaves": "localhost:6380", // 可选,仅 Instance 模式使用
"Password": "your_password", // 可选
"DefaultDatabase": 0,
"ConnectTimeout": 5000,
"CommandTimeout": 5000,
"ConnectRetry": 3,
"KeepAlive": 60,
"BusyRetry": 3,
"BusyRetryWaitMS": 500,
"AllowAdmin": false,
"ServiceName": "mymaster" // 可选,仅 Sentinel 模式使用
}
}
// 创建缓存实例
var cache = new RedisCache();
// 设置缓存
cache.Set("user:1", new UserInfo { Id = 1, Name = "张三" });
// 获取缓存
var user = cache.Get<UserInfo>("user:1");
// 删除缓存
cache.Del("user:1");
// 检查缓存是否存在
var exists = cache.ContainsKey("user:1");
// 获取 Redis 客户端
var redis = new CyclopsRedis();
// 创建队列实例
var queue = redis.GetRedisQueue<OrderInfo>("order_queue");
// 入队
var order = new OrderInfo { OrderId = "ORD123", Amount = 100.5 };
var queueId = await queue.EnqueueAsync(order);
// 出队
string key;
var dequeuedOrder = await queue.DequeueAsync(out key);
// 获取 Redis 客户端
var redis = new CyclopsRedis();
// 创建分布式锁
var distributedLock = redis.CreateDistributedLock("lock:order:123", TimeSpan.FromSeconds(30));
// 尝试获取锁,最多等待5秒,每50ms重试一次
if (await distributedLock.AcquireAsync(TimeSpan.FromSeconds(5), TimeSpan.FromMilliseconds(50)))
{
try
{
// 执行需要同步的操作
Console.WriteLine("获取锁成功,执行操作...");
await Task.Delay(1000);
}
finally
{
// 释放锁
await distributedLock.ReleaseAsync();
}
}
else
{
Console.WriteLine("获取锁失败");
}
// 获取 Redis 客户端
var redis = new CyclopsRedis();
// 创建订阅者
var subscriber = redis.GetSubscriber("notification_channel");
// 订阅消息
await subscriber.SubscribeAsync((channel, message) => {
Console.WriteLine($"收到消息: {message}");
});
// 创建发布者
var publisher = redis.GetPublisher("notification_channel");
// 发布消息
await publisher.PublishAsync("Hello, Redis Pub/Sub!");
// 获取 Redis 客户端
var redis = new CyclopsRedis();
// 创建生产者
var producer = redis.GetRedisProducer("order_stream");
// 发送消息
await producer.ProduceAsync(new Dictionary<string, string>() {
{ "orderId", "ORD456" },
{ "amount", "200.0" }
});
// 创建消费者
var consumer = redis.GetRedisConsumer("order_stream", 0, "order_group");
// 消费消息
var messages = await consumer.ConsumeAsync(count: 10);
foreach (var message in messages)
{
Console.WriteLine($"消费消息: {message.Id} - {message.Data}");
// 确认消息
await consumer.AcknowledgeAsync(message.Id);
}
// 哨兵模式配置示例
var sentinelOptions = new RedisOptions {
Type = EnumRedisType.Sentinel,
Masters = "sentinel1:26379,sentinel2:26379",
ServiceName = "mymaster"
};
// 集群模式配置示例
var clusterOptions = new RedisOptions {
Type = EnumRedisType.Cluster,
Masters = "node1:6379,node2:6379,node3:6379"
};
// 获取键过期监听器
var listener = redis.GetKeyExpireListener();
// 订阅键过期事件
await listener.SubscribeAsync((key) => {
Console.WriteLine($"键过期: {key}");
// 执行清理或其他操作
});
// 使用单例实例
var cache = RedisCache.Instance;
// 或使用 CyclopsRedis 单例
var redis = CyclopsRedis.Instance;
保留所有权利