TJC.Cyclops.Redis 2026.4.14.2

There is a newer version of this package available.
See the version list below for details.
dotnet add package TJC.Cyclops.Redis --version 2026.4.14.2
                    
NuGet\Install-Package TJC.Cyclops.Redis -Version 2026.4.14.2
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="TJC.Cyclops.Redis" Version="2026.4.14.2" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="TJC.Cyclops.Redis" Version="2026.4.14.2" />
                    
Directory.Packages.props
<PackageReference Include="TJC.Cyclops.Redis" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add TJC.Cyclops.Redis --version 2026.4.14.2
                    
#r "nuget: TJC.Cyclops.Redis, 2026.4.14.2"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package TJC.Cyclops.Redis@2026.4.14.2
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=TJC.Cyclops.Redis&version=2026.4.14.2
                    
Install as a Cake Addin
#tool nuget:?package=TJC.Cyclops.Redis&version=2026.4.14.2
                    
Install as a Cake Tool

🚀 Cyclops.Redis

📝 项目概述

Cyclops.Redis 是 Cyclops.Framework 中的Redis客户端集成专家,为您的应用程序提供强大而灵活的 Redis 操作封装! 🎯

我们精心设计的组件支持多种 Redis 部署模式(单实例、哨兵、集群),并封装了缓存、队列、分布式锁、发布订阅等常用功能,简化了 Redis 在 .NET 应用程序中的使用。无论是构建高性能缓存系统,还是实现分布式队列,Cyclops.Redis都能为您提供出色的支持。

✨ 为什么选择 Cyclops.Redis?

  • 多种部署模式:支持单实例、哨兵和集群三种部署模式
  • 功能丰富:封装了缓存、队列、分布式锁、发布订阅等常用功能
  • 易于集成:与.NET依赖注入系统无缝集成
  • 高性能:基于StackExchange.Redis实现高效的连接池管理
  • 可靠性:提供安全的分布式锁实现和故障处理
  • 灵活性:丰富的配置选项,适应不同场景需求

🎯 核心功能模块

🔌 Redis 连接管理

  • 多种部署模式:支持单实例(Instance)、哨兵(Sentinel)和集群(Cluster)三种部署模式
  • 连接池管理:基于 StackExchange.Redis 实现高效的连接池管理
  • 灵活配置:提供丰富的配置选项,支持密码认证、连接超时、重试策略等
  • 故障处理:内置连接异常处理和自动重连机制
// 连接管理核心实现位于 RedisClient 类

📦 缓存操作

  • 统一接口:实现 IServiceCache 接口,提供标准化的缓存操作
  • 自动序列化:自动处理对象的 JSON 序列化与反序列化
  • 过期管理:支持设置缓存过期时间和检查过期状态
  • 哈希存储:使用 Redis 哈希结构存储缓存数据,便于管理
  • 批量操作:支持批量设置和获取缓存
// RedisCache 类提供完整的缓存功能实现

📋 Redis 队列

  • 高性能队列:基于 Redis List 实现的高性能分布式队列
  • 状态跟踪:支持队列任务的状态管理(未开始、处理中等)
  • 异步操作:提供同步和异步的队列操作方法
  • 超时管理:支持设置队列数据的过期时间
  • 优先级队列:支持基于优先级的队列操作
// RedisQueue<T> 类实现了类型化的队列操作

🔒 分布式锁

  • 安全实现:基于 SET NX PX 命令和 Lua 脚本实现的安全分布式锁
  • 锁续期:支持锁的续期操作,防止长时间任务执行期间锁过期
  • 智能重试:支持配置等待超时和重试间隔
  • 安全释放:使用 Lua 脚本确保只有锁的持有者才能释放锁
  • 可重入锁:支持可重入锁机制
// RedisDistributedLock 类实现了安全的分布式锁机制

📡 Redis 流(Stream)

  • 生产者-消费者:提供 Redis Stream 的生产者和消费者封装
  • 消息分组:支持基于消费者组的消息处理
  • 持久化:利用 Redis Stream 的持久化特性
  • 消息回溯:支持消息的确认和回溯机制
  • 消息过滤:支持基于条件的消息过滤
// RedisProducer 和 RedisConsumer 类实现了流操作

📢 发布订阅系统

  • 发布-订阅模式:提供 Redis 发布订阅的完整封装
  • 多频道支持:支持多频道的发布和订阅
  • 键过期监听:提供键过期事件的监听机制
  • 消息广播:支持向多个订阅者广播消息
// RedisPublisher 和 RedisSubscriber 类实现了发布订阅功能
// RedisKeyExpireListener 类实现了键过期监听

🛠️ 技术栈

  • .NET 8.0:基于最新的 .NET 平台构建,利用最新的.NET特性
  • StackExchange.Redis:高性能的 Redis 客户端库,提供高效的连接管理
  • JSON 序列化:内置 JSON 序列化支持,自动处理对象序列化
  • Lua 脚本:用于实现原子操作(如分布式锁的安全释放)

📦 环境依赖

  • .NET 8.0 或更高版本
  • Redis 服务器:支持 Redis 3.2 及以上版本(使用流功能需要 Redis 5.0+)
  • 支持的平台:Windows、Linux、macOS
  • IDE推荐:Visual Studio 2022、Visual Studio Code

🚀 安装与配置

🔍 安装方式

NuGet包管理器
Install-Package TJC.Cyclops.Redis
.NET CLI
dotnet add package TJC.Cyclops.Redis
PackageReference
<PackageReference Include="TJC.Cyclops.Redis" Version="1.0.0" />

⚙️ 配置 Redis 连接

配置文件设置

在应用程序配置文件中添加 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 模式使用
  }
}
依赖注入配置

在ASP.NET Core应用中,通过依赖注入进行配置:

// 在Program.cs或Startup.cs中
using Cyclops.Redis;

var builder = WebApplication.CreateBuilder(args);

// 读取Redis配置
var redisOptions = new RedisOptions();
builder.Configuration.GetSection("RedisOptions").Bind(redisOptions);

// 添加Cyclops.Redis服务
builder.Services.AddCyclopsRedis(redisOptions);

var app = builder.Build();

// ...

app.Run();

🎯 配置建议

  • 连接超时:根据网络环境设置合理的连接超时时间
  • 重试策略:配置适当的重试次数和间隔,提高可靠性
  • 密码安全:将密码存储在安全的配置管理系统中
  • 数据库选择:根据应用需求选择合适的Redis数据库
  • 部署模式:根据应用规模选择合适的Redis部署模式

📝 代码示例

📦 基本使用 - 缓存操作

以下示例展示了如何使用 Cyclops.Redis 进行缓存操作:

// 创建缓存实例
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 队列操作

以下示例展示了如何使用 Cyclops.Redis 进行队列操作:

// 获取 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);

🔒 分布式锁使用

以下示例展示了如何使用 Cyclops.Redis 实现分布式锁:

// 获取 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 发布订阅

以下示例展示了如何使用 Cyclops.Redis 实现发布订阅功能:

// 获取 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 流操作

以下示例展示了如何使用 Cyclops.Redis 实现流操作:

// 获取 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);
}

⚡ 高级功能

🔌 多种连接模式

以下示例展示了如何配置不同的Redis连接模式:

// 哨兵模式配置示例
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"
};

🔔 键过期监听

以下示例展示了如何使用 Cyclops.Redis 监听键过期事件:

// 获取键过期监听器
var listener = redis.GetKeyExpireListener();

// 订阅键过期事件
await listener.SubscribeAsync((key) => {
    Console.WriteLine($"键过期: {key}");
    // 执行清理或其他操作
});

📦 单例模式使用

以下示例展示了如何使用 Cyclops.Redis 的单例模式:

// 使用单例实例
var cache = RedisCache.Instance;

// 或使用 CyclopsRedis 单例
var redis = CyclopsRedis.Instance;

🚀 性能优化建议

  • 合理设置连接池:根据并发量调整连接池大小,避免连接过多或过少
  • 优先使用异步操作:使用异步方法提高并发性能,避免阻塞主线程
  • 设置合理的过期时间:为缓存数据设置适当的过期时间,避免 Redis 内存无限增长
  • 使用管道和事务:批量操作时使用管道或事务,减少网络往返次数
  • 统一键命名规范:使用清晰、一致的键命名规范,便于管理和查询
  • 优化数据结构:根据数据特点选择合适的 Redis 数据结构
  • 监控内存使用:定期监控 Redis 内存使用情况,及时调整策略
  • 使用 Redis Cluster:对于大规模应用,考虑使用 Redis Cluster 提高可用性和性能

🔧 故障排查

  • 连接问题:检查 Redis 服务器是否运行,网络是否可达,密码是否正确
  • 超时问题:调整连接超时和命令超时设置,检查网络延迟
  • 内存问题:监控 Redis 内存使用情况,设置合理的 maxmemory 策略
  • 分布式锁争用:调整锁的过期时间和重试策略,避免长时间占用锁
  • 性能问题:检查 Redis 服务器性能,考虑使用 Redis Cluster 或哨兵模式
  • 序列化问题:确保缓存对象可序列化,检查 JSON 序列化配置
  • 键冲突:使用唯一的键命名空间,避免键冲突
  • 版本兼容性:确保 Redis 服务器版本与使用的功能兼容(如流功能需要 Redis 5.0+)

🤝 贡献者

我们欢迎社区贡献!如果您有任何改进建议或功能需求,欢迎提交PR或Issue。

  • yswenli:核心开发者

📋 版本信息

  • 当前版本NuGet version (Cyclops.Framework)
  • 作者:yswenli
  • 描述:企服版框架中Redis客户端集成组件
  • 更新频率:定期更新,持续改进

📄 许可证

保留所有权利

🎉 结语

Cyclops.Redis 致力于为您的应用程序提供强大、灵活的 Redis 操作能力。我们相信,通过简化 Redis 的使用复杂性,您可以更专注于业务逻辑的实现,构建出更高效、更可靠的分布式应用。

如果您有任何问题或建议,欢迎与我们联系!让我们一起构建更好的Redis集成解决方案! 🚀

Product Compatible and additional computed target framework versions.
.NET net8.0 is compatible.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages (2)

Showing the top 2 NuGet packages that depend on TJC.Cyclops.Redis:

Package Downloads
TJC.Cyclops.Web.Core

企服版框架中api核心功能项目,基于aspnetcore集成di、jwt、swagger、codefirtst、支持多种常见数据库、nacos配置中心、统一接口回复参数、全局异常捕获、全局接口日志、防重放攻击、图形验证码、快捷上下文对象、上传下载、数据导入导出等功能

TJC.Cyclops.TaskSystem

企服版任务核心

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
2026.4.24.2 0 4/24/2026
2026.4.24.1 0 4/24/2026
2026.4.14.2 122 4/14/2026
2026.4.14.1 126 4/14/2026
2026.4.13.1 122 4/13/2026
2026.3.30.1 136 3/30/2026
2026.3.26.1 122 3/26/2026
2026.3.24.1 122 3/24/2026
2026.3.12.2 132 3/12/2026
2026.3.12.1 132 3/12/2026
2026.2.26.1 132 2/26/2026
2026.2.4.1 168 2/4/2026
2026.1.15.1 155 1/15/2026
2026.1.14.2 150 1/14/2026
2026.1.14.1 144 1/14/2026
2026.1.13.2 150 1/13/2026
2026.1.13.1 163 1/13/2026
2026.1.7.1 179 1/7/2026
2025.12.23.1 260 12/23/2025
2025.12.16.1 345 12/16/2025
Loading failed

企服版框架redis sdk