NewLife.Redis
6.5.2026.303
See the version list below for details.
dotnet add package NewLife.Redis --version 6.5.2026.303
NuGet\Install-Package NewLife.Redis -Version 6.5.2026.303
<PackageReference Include="NewLife.Redis" Version="6.5.2026.303" />
<PackageVersion Include="NewLife.Redis" Version="6.5.2026.303" />
<PackageReference Include="NewLife.Redis" />
paket add NewLife.Redis --version 6.5.2026.303
#r "nuget: NewLife.Redis, 6.5.2026.303"
#:package NewLife.Redis@6.5.2026.303
#addin nuget:?package=NewLife.Redis&version=6.5.2026.303
#tool nuget:?package=NewLife.Redis&version=6.5.2026.303
NewLife.Redis - 高性能 Redis 客户端组件
[English]
NewLife.Redis 是新生命团队打造的高性能 / 高吞吐 / 易集成的 .NET Redis 客户端组件。自 2017 年起在多个千万 / 百亿级数据与高并发生产平台稳定运行,经受日均 80+ 亿次命令调用考验。
📖 完整文档:需求文档 | 架构文档 | 竞品分析 | Garnet 兼容性
目录
- NewLife.Redis - 高性能 Redis 客户端组件
产品介绍
NewLife.Redis 为 .NET 开发者提供对 Redis 全生命周期的访问能力:
- 协议完整:实现 RESP2 协议,覆盖 Redis 2.8 ~ 7.x 全版本主流命令,支持 String / List / Hash / Set / Sorted Set / Stream / Geo / HyperLogLog 所有数据结构。
- 消息队列:内置简单队列、可靠队列(RPOPLPUSH + Ack 语义)、延迟队列、Stream 多消费组队列,开箱即用,无需重复造轮子。
- 集群高可用:支持 Standalone / 主从复制 / Sentinel 哨兵 / Cluster 原生集群,自动故障切换。
- 云厂商适配:针对阿里云 KVStore / 腾讯云 Redis / 华为云 DCS 提供专项配置说明与适配,覆盖代理模式、ACL 认证、SSL 加密、特殊认证格式等差异。
- 兼容实现:自动识别 Microsoft Garnet、kvrocks 等 Redis 兼容实现,功能不支持时优雅降级并提供明确替代方案。
- 宽框架支持:一个包覆盖 .NET Framework 4.5 ~ .NET 10+,适配工控、政务、IoT 等遗留场景。
核心特性
- 经大规模生产验证:200+ Redis 实例,日峰值 1 亿+ 业务对象写入 / 80+ 亿命令调用
- 低延迟:单次 Get/Set 往返 200~600µs(含网络)
- 高吞吐:内置连接池(最大 100,000 并发)+ 高效同步 RESP 协议解析 + 可选自动管道合并
- 自动重试与多地址故障切换:Server 支持逗号分隔多节点,网络异常快速切换,默认 10 秒屏蔽窗口
- 丰富高级结构:List / Hash / Set / SortedSet / Stack / Geo / HyperLogLog / Stream
- 多种消息队列范式:简单 / 可靠 / 延迟 / Stream / 多消费组
- 可插拔编码器:默认 JSON,可扩展二进制序列化
- APM 追踪:支持
ITracer链路追踪 +PerfCounter性能计数器 - 强命名 + 多目标框架:net45 / net461 / netstandard2.0 / netstandard2.1 / (扩展包含 netcoreapp3.1 → net10)
- 零外部重量级依赖,充分复用 NewLife 生态(日志、配置、序列化、安全)
Redis 协议与版本支持
RESP 协议支持
| 协议 | 状态 | 说明 |
|---|---|---|
| RESP2 | ✅ 完整支持 | 简单字符串 / 错误 / 整数 / 批量字符串 / 数组 |
| RESP3 | 🔄 规划中 | Map / Set / Double 类型,需 HELLO 握手协商 |
Redis 版本特性支持
| Redis 版本 | 主要特性 | 状态 |
|---|---|---|
| 2.8 | 基础命令、SCAN、HyperLogLog、Pub/Sub | ✅ 完整支持 |
| 3.0 | Cluster 原生集群、CRC16 分片路由 | ✅ 完整支持 |
| 3.2 | GEO 地理信息 | ✅ 完整支持 |
| 4.0 | UNLINK 异步删除、MODULE | 🔄 部分支持 |
| 5.0 | Stream 数据结构(XADD/XREAD/XGROUP/XACK 全套) | ✅ 完整支持 |
| 6.0 | ACL 访问控制、TLS/SSL、LMOVE、RESET | ✅ 完整支持 |
| 6.2 | COPY、GETDEL、GETEX、GEOSEARCH | ✅ 主要命令支持 |
| 7.0 | Functions(FCALL)、LMPOP/ZMPOP、分片 Pub/Sub | 🔄 规划中 |
| 7.2 | SSUBSCRIBE / SPUBLISH | 🔄 规划中 |
架构与模块划分
┌─────────────────────────────────────────────────────────────────┐
│ 应用层 │
│ ASP.NET Core / Console / WinForms / IoT / Worker Service │
└──────────────────────────────┬──────────────────────────────────┘
│
┌──────────────────────────────▼──────────────────────────────────┐
│ 扩展集成层 (NewLife.Redis.Extensions) │
│ IDistributedCache · IDataProtection · AddRedisCaching DI │
└──────────────────────────────┬──────────────────────────────────┘
│
┌──────────────────────────────▼──────────────────────────────────┐
│ 高级功能层 (FullRedis) │
│ RedisList<T> · RedisHash<T> · RedisSet<T> · RedisSortedSet<T> │
│ RedisStack<T> · RedisGeo · HyperLogLog · PrefixedRedis │
│ RedisQueue<T> · RedisReliableQueue<T> · RedisDelayQueue<T> │
│ RedisStream<T> · PubSub · RedisEventBus │
│ RedisCluster · RedisSentinel · RedisReplication │
└──────────────────────────────┬──────────────────────────────────┘
│
┌──────────────────────────────▼──────────────────────────────────┐
│ 核心客户端层 (Redis) │
│ 连接池 ObjectPool<RedisClient>(Min=10, Max=100000) │
│ 多节点切换 · Pipeline 管理 · 编码器 · 配置解析 │
└──────────────────────────────┬──────────────────────────────────┘
│
┌──────────────────────────────▼──────────────────────────────────┐
│ 协议通信层 (RedisClient) │
│ TCP/TLS 连接 · RESP2 编解码 · ArrayPool<byte> 缓冲区 │
└──────────────────────────────┬──────────────────────────────────┘
│ TCP/TLS
┌──────────────────────────────▼──────────────────────────────────┐
│ Redis Server / Garnet / kvrocks / 阿里云 / 腾讯云 / 华为云 │
└─────────────────────────────────────────────────────────────────┘
关键类说明:
| 类 | 职责 |
|---|---|
Redis |
核心客户端:连接池、多节点切换、Pipeline、配置管理 |
FullRedis |
增强客户端:集群路由、键前缀、数据结构工厂方法 |
RedisClient |
RESP 协议单元:TCP 连接、命令编解码(内部,池化管理) |
RedisList<T> 等 |
泛型数据结构封装,统一编码策略 |
RedisReliableQueue<T> |
可靠消息队列(RPOPLPUSH + Ack 确认) |
RedisStream<T> |
Stream 流队列(Redis 5.0+,消费组模式) |
IPacketEncoder |
可插拔编解码策略 |
安装与快速开始
# 稳定版
dotnet add package NewLife.Redis
# ASP.NET Core 扩展
dotnet add package NewLife.Redis.Extensions
# 开发版(含预发布)
dotnet add package NewLife.Redis --prerelease
推荐单例,线程安全,全程复用:
using NewLife.Caching;
using NewLife.Log;
XTrace.UseConsole();
var rds = new FullRedis("127.0.0.1:6379", "password", 0)
{
Log = XTrace.Log, // 可选:组件日志
AutoPipeline = 100, // 可选:命令数达到 100 自动提交管道
};
// 写入对象(自动 JSON 序列化)
rds.Set("user:1", new { Name = "Alice", Age = 30 }, expire: 3600);
// 读取(自动反序列化)
var name = rds.Get<String>("user:1");
Console.WriteLine(name);
连接字符串模式(推荐配置中心):
var rds = FullRedis.Create("server=127.0.0.1:6379;password=pass;db=0;timeout=3000");
基础用法
// 写入 / 读取
rds.Set("k1", 123, expire: 600);
var v = rds.Get<Int32>("k1");
// 仅在不存在时写入
var ok = rds.Add("k2", "init");
// 替换并返回旧值
var old = rds.Replace("k2", "new");
// 计数器
rds.Increment("counter", 1);
rds.Decrement("counter", 2);
// 过期管理
rds.SetExpire("k1", TimeSpan.FromMinutes(10));
var ttl = rds.GetExpire("k1");
// 批量读写
rds.SetAll(new Dictionary<String, Object> { ["a"] = 1, ["b"] = 2 }, expire: 300);
var dict = rds.GetAll<Int32>(["a", "b"]);
// 键前缀(PrefixedRedis)
var scoped = rds.GetPrefixed("myapp:");
scoped.Set("user", "Alice"); // 实际 key 为 myapp:user
数据结构操作
List(列表)
var list = rds.GetList<String>("queue:demo");
list.Add("job1");
list.Add("job2");
var first = list[0];
var popped = list.RightPop();
Hash(哈希)
var hash = rds.GetDictionary<String>("user:1001");
hash["Name"] = "Alice";
hash["Email"] = "alice@example.com";
var name = hash["Name"];
var all = hash.GetAll();
Set(集合)/ SortedSet(有序集合)
var set = rds.GetSet<String>("tags");
set.Add("redis");
set.Add("cache");
var contains = set.Contains("redis");
var zset = rds.GetSortedSet<String>("leaderboard");
zset.Add("Player1", 100.0);
zset.Add("Player2", 95.5);
var top3 = zset.GetByRank(0, 2);
Stack(栈)
var stack = rds.GetStack<String>("undo:ops");
stack.Push("op1");
stack.Push("op2");
var last = stack.Pop(); // "op2"
Geo(地理信息)
var geo = rds.GetGeo("locations");
geo.Add("Beijing", 116.4074, 39.9042);
geo.Add("Shanghai", 121.4737, 31.2304);
var dist = geo.GetDistance("Beijing", "Shanghai", "km");
var nearby = geo.Search("Beijing", 500, "km");
HyperLogLog(基数统计)
var hll = rds.GetHyperLogLog("uv:today");
hll.Add("user1", "user2", "user3");
var count = hll.Count; // 近似基数
hll.Merge("uv:yesterday");
注意:基础
Redis实例仅支持 KV 操作,高级集合请使用FullRedis。
管道 Pipeline 与自动合并
Pipeline 可显著降低网络往返(RTT),提升批量操作吞吐:
// 显式管道
rds.StartPipeline();
for (var i = 0; i < 1000; i++) rds.Set($"p:{i}", i);
var results = rds.StopPipeline(true);
自动模式(推荐生产使用):
rds.AutoPipeline = 100; // 写操作达到 100 条自动提交
rds.FullPipeline = true; // 读写操作均进入管道(吞吐优先场景)
消息队列
简单队列
var queue = rds.GetQueue<OrderMsg>("orders");
// 生产者
queue.Add(new OrderMsg { OrderId = "12345", Amount = 99.9m });
// 消费者(阻塞等待,timeout=0 永久阻塞)
var msg = queue.TakeOne(timeout: 30);
可靠队列(至少一次语义)
var queue = rds.GetReliableQueue<OrderMsg>("orders");
// 生产
queue.Add(new OrderMsg { OrderId = "12345" });
// 消费 + 确认
var msg = queue.TakeOne(timeout: 30);
if (msg != null)
{
// 处理消息...
queue.Acknowledge(msg); // 确认消费,从 Ack 队列移除
}
// 若进程崩溃未确认,60s 后消息自动回滚到主队列
延迟队列
var delay = rds.GetDelayQueue<OrderMsg>("orders:delay");
// 60 秒后可被消费
delay.Add(new OrderMsg { OrderId = "12345" }, delay: 60);
// 消费(自动等待到期消息)
var msg = delay.TakeOne(timeout: 5);
Stream 流队列(Redis 5.0+,多消费组)
var stream = rds.GetStream<LogEntry>("logs");
stream.Group = "processor-group";
// 生产
stream.Add(new LogEntry { Level = "INFO", Message = "Application started" });
// 消费(多实例竞争消费同一组)
var entry = stream.TakeOne(timeout: 15);
if (entry != null)
{
// 处理...
stream.Acknowledge(entry.Id);
}
发布订阅
var pubsub = rds.GetPubSub("events:user");
// 发布
pubsub.Publish("login:Alice");
// 订阅(异步循环)
var cts = new CancellationTokenSource();
await pubsub.SubscribeAsync((channel, message) =>
{
Console.WriteLine($"[{channel}] {message}");
}, cts.Token);
集群与高可用
多地址自动切换
// 逗号分隔多地址,网络异常时自动切换,60 秒后切回主节点
var rds = new FullRedis("10.0.0.1:6379,10.0.0.2:6379,10.0.0.3:6379", "pass", 0)
{
ShieldingTime = 10, // 不可用节点屏蔽 10 秒(默认)
Retry = 3, // 重试次数(默认)
};
自动集群模式检测
// AutoDetect=true 时,通过 INFO 自动识别工作模式
// ⚠️ 公有云代理模式下请保持默认 false,避免获取到内网节点地址
var rds = new FullRedis("sentinel-host:26379", "pass", 0)
{
AutoDetect = true, // 自动识别 Cluster / Sentinel / Replication
};
云厂商适配
阿里云 KVStore / Tair
// 标准版(Redis 2.8/4.0/5.0/6.0/7.0)
var rds = new FullRedis("xxxxxx.redis.rds.aliyuncs.com:6379", "YourPassword", 0);
// Redis 6.0 ACL 用户认证
var rds = new FullRedis("xxxxxx.redis.rds.aliyuncs.com:6379", "YourUser", "YourPassword", 0);
// SSL 加密连接
var rds = new FullRedis("xxxxxx.redis.rds.aliyuncs.com:6380", "YourPassword", 0)
{
SslProtocol = SslProtocols.Tls12,
};
// ⚠️ 公有云代理模式:AutoDetect 保持默认 false
// ⚠️ 集群版:代理已处理分片路由,客户端无需感知内部拓扑
腾讯云 Redis
// 腾讯云标准/集群版:UserName 填写实例 ID(AUTH instanceId:password 格式)
var rds = new FullRedis("xxxxxx.redis.tencentcds.com:6379", "instanceId", "YourPassword", 0);
// 或连接字符串形式
var rds = FullRedis.Create("server=xxxxxx.redis.tencentcds.com:6379;username=instanceId;password=YourPassword;db=0");
华为云 DCS
// 主备版(标准 AUTH)
var rds = new FullRedis("xxxxxx.dcs.myhuaweicloud.com:6379", "YourPassword", 0);
// SSL 加密版(下载 PEM 证书后使用)
var rds = new FullRedis("xxxxxx.dcs.myhuaweicloud.com:6380", "YourPassword", 0)
{
SslProtocol = SslProtocols.Tls12,
Certificate = new X509Certificate2("huawei-dcs.pem"),
};
// ⚠️ 集群版不支持 SELECT,Db 必须为 0
// ⚠️ AutoDetect = false(默认),避免内网节点地址问题
云厂商通用注意事项:
- 公有云代理模式:保持
AutoDetect = false(默认值),不让客户端自动探测内网节点 - 连接数配额:各云厂商各规格连接数有上限,合理设置连接池
Max参数 - TCP 保活:华为云默认 300 秒 TCP 空闲超时,设置
Timeout小于此值并定期 PING
序列化与编码器
默认编码:RedisJsonEncoder(内置 JSON 主机),开箱即用。
// 查看当前 JSON 配置
var jsonHost = RedisJsonEncoder.GetJsonHost();
// 切换为自定义编码器(如 MessagePack)
rds.Encoder = new MyMessagePackEncoder();
基元类型(String / Int32 / Int64 / Double / Boolean)直接序列化,不经 JSON,性能最优。
安全与认证
// Redis 6.0+ ACL 认证
var rds = new FullRedis("host:6379", "username", "password", 0);
// TLS 加密(指定协议版本)
rds.SslProtocol = SslProtocols.Tls12;
// 证书验证(双向 mTLS)
rds.Certificate = new X509Certificate2("client.pem", "certPassword");
// 连接字符串密码加密(ProtectedKey 机制)
// 配置 ProtectedKey.Instance.Secret,连接字符串中密码自动解密
可观测性
// 结构化日志
rds.Log = XTrace.Log; // 组件日志(连接切换、集群变化、重试)
rds.ClientLog = XTrace.Log; // 协议层日志(每条命令,调试时开启)
// 性能计数器
rds.Counter = new PerfCounter();
var stats = rds.Counter.GetAll(); // 获取 ops/s、延迟、错误率
// APM 链路追踪(与 NewLife.Stardust / OpenTelemetry 兼容)
rds.Tracer = DefaultTracer.Instance;
// 所有 Execute / 队列生产消费均自动埋点,key 作为 Tag
扩展包
NewLife.Redis.Extensions 提供 ASP.NET Core 深度集成:
dotnet add package NewLife.Redis.Extensions
// Program.cs
builder.Services.AddRedisCaching(options =>
{
options.Server = "127.0.0.1:6379";
options.Password = "pass";
options.Db = 0;
options.Prefix = "myapp:";
});
// 同时自动注册 IDistributedCache + FullRedis 单例
// 数据保护密钥存储到 Redis
builder.Services.AddDataProtection()
.PersistKeysToRedis(redis, "DataProtection-Keys");
Garnet 兼容性
NewLife.Redis 完整支持微软的 Garnet 高性能 Redis 兼容服务器,自动检测并优雅降级。
var redis = new FullRedis("127.0.0.1:7000", null, 0);
// 自动检测服务器类型
if (redis.IsGarnet)
Console.WriteLine("已连接到 Garnet 服务器");
Console.WriteLine($"服务器类型:{redis.ServerType}"); // Redis / Garnet / Unknown
Console.WriteLine($"服务器版本:{redis.Version}");
| 功能 | Garnet 支持状态 |
|---|---|
| String / List / Hash / Set / Sorted Set | ✅ 完全支持 |
| HyperLogLog / Geo | ✅ 完全支持 |
| Pub/Sub / 事务 / Lua 脚本 | ✅ 完全支持 |
| Pipeline / 管道 | ✅ 完全支持 |
RedisQueue<T> / RedisDelayQueue<T> |
✅ 完全支持 |
RedisReliableQueue<T> |
✅ 完全支持 |
RedisStream<T> |
❌ Garnet 暂不支持 Stream,自动抛出 NotSupportedException 并提示替代方案 |
详见:Garnet 兼容性文档
功能拆分与完成情况
图例:✅ 已完成 | 🔄 规划中 | ❌ 明确不计划
数据结构
| 结构 | 完成状态 | 说明 |
|---|---|---|
| String KV + 批量 | ✅ | MGET/MSET/INCR/APPEND/GETRANGE 等 |
| List | ✅ | LPUSH/RPOP/LRANGE/LMOVE 等 |
| Hash | ✅ | HGET/HSET/HMGET/HSCAN 等 |
| Set | ✅ | SADD/SMEMBERS/SUNION/SDIFF 等 |
| Sorted Set | ✅ | ZADD/ZRANGE/ZPOPMIN/ZSCAN 等 |
| Stream | ✅ | XADD/XREAD/XGROUP/XACK 全套 |
| Geo | ✅ | GEOADD/GEODIST/GEOSEARCH 等 |
| HyperLogLog | ✅ | PFADD/PFCOUNT/PFMERGE |
| Bitmap / Bitfield | 🔄 | SETBIT/BITCOUNT/BITFIELD |
消息队列
| 队列类型 | 完成状态 | 语义保障 |
|---|---|---|
RedisQueue<T> |
✅ | 至多一次 |
RedisReliableQueue<T> |
✅ | 至少一次(RPOPLPUSH + Ack) |
RedisDelayQueue<T> |
✅ | 延迟投递(Sorted Set) |
RedisStream<T> |
✅ | 有序 + 消费组 + XACK |
MultipleConsumerGroupsQueue<T> |
✅ | 多消费组广播 |
PubSub + RedisEventBus |
✅ | 实时推送 |
| RedLock 分布式锁 | 🔄 | 多实例 Redlock 算法 |
集群支持
| 模式 | 完成状态 |
|---|---|
| Standalone 单机 | ✅ |
| 主从复制 Replication | ✅ |
| Sentinel 哨兵 | ✅ |
| Cluster 原生集群 | ✅ |
| kvrocks 自动适配 | ✅ |
| Garnet 自动检测 | ✅ |
协议与高级特性
| 功能 | 完成状态 |
|---|---|
| RESP2 完整支持 | ✅ |
| RESP3 | 🔄 规划中 |
| SSL/TLS | ✅ |
| ACL 认证 | ✅ |
| 事务 MULTI/EXEC/WATCH | ✅ |
| Lua 脚本 EVAL/EVALSHA | ✅ |
| Redis Functions | 🔄 规划中 |
| Pipeline(显式+自动) | ✅ |
| 模式订阅 PSUBSCRIBE | 🔄 |
| UNLINK 异步删除 | 🔄 |
性能测试参考
源码内置 Benchmark(Samples/Benchmark),典型结果(40 逻辑处理器,本地 Redis 7.0):
写入 400,000 项 | 4 线程 | ~576,368 ops/s
读取 800,000 项 | 8 线程 | ~647,249 ops/s
删除 800,000 项 | 8 线程 | ~1,011,378 ops/s
批量写入(管道)| 4 线程 | ~1,800,000 ops/s
手动触发 Bench:
rds.Bench(rand: true, batch: 100); // 随机键 + 批量优化
实际性能受网络 RTT / Value 大小 / 序列化复杂度影响。建议单 Value 控制在 1~1.4KB。
最佳实践
- 单例复用:
FullRedis内部有连接池,强烈建议单例供全程使用,不要每次new - Key 设计:使用
:分层,如user:1001:profile;生产环境使用Prefix隔离命名空间 - 批量优先:能
GetAll/SetAll不循环单键;利用AutoPipeline自动合并写操作 - Value 大小:控制在 1~2KB;大对象拆分 / 压缩 / 用 Hash 分字段存储
- 可靠消费:生产场景使用
RedisReliableQueue<T>而非简单 List,避免消息丢失 - 云厂商:公有云保持
AutoDetect = false,避免内网节点地址问题 - 监控:生产启用
Counter统计;ClientLog仅调试时打开,避免热路径日志开销 - SSL:公有云 / 生产环境启用 TLS 加密传输
常见问题 FAQ
Q: 是否支持 Redis Cluster 分片?
A: 支持。FullRedis 通过 AutoDetect=true 自动识别 Cluster 模式,CRC16 路由、MOVED/ASK 重定向均已实现。公有云代理模式建议保持默认 AutoDetect=false。
Q: 和 StackExchange.Redis 相比有什么区别?
A: NewLife.Redis 采用连接池模型(对比 StackExchange 的多路复用),连接行为更直观;内置消息队列封装(可靠队列/延迟队列)是核心差异化;支持 .NET Framework 4.5。详见 竞品分析。
Q: 如何处理大 Value 导致的慢查询?
A: 拆分数据结构(如 Hash 分字段)+ 批量读写 + 二进制编码器 + 控制 MaxMessageSize(默认 1MB 上限)。
Q: 连接池用完了怎么办?
A: 默认最大 100,000 连接,正常业务不会耗尽。若出现等待超时,检查是否有连接泄漏(未 Dispose)或某些操作持续长时间占用。
Q: 使用阿里云 / 腾讯云为什么连接失败?
A: 检查:① AutoDetect 是否为 false(默认正确);② 认证格式是否正确(腾讯云需要 username=instanceId);③ 网络安全组 / 白名单是否放开客户端 IP;④ 集群版是否禁止使用 SELECT 切库。
Q: Garnet 服务器是否支持所有功能?
A: 基础操作、List/Hash/Set/ZSet/HLL/Geo/队列均支持;Stream 暂不支持,会自动抛出 NotSupportedException 并提示用 RedisQueue<T> 替代。
路线图 Roadmap
- RESP3 协议支持(Redis 7.x 新特性基础)
- Redis Functions(FCALL/FUNCTION,替代 Lua 脚本)
- LMPOP / ZMPOP(Redis 7.0 批量弹出)
- RedLock 多实例分布式锁
- Bitmap / Bitfield 操作
- 模式订阅 PSUBSCRIBE 完整实现
- UNLINK 异步删除
- Prometheus 指标导出适配器
- 阿里云 Tair 扩展命令(TairString / TairZSet / TairHash)
- 华为云 DCS 集群版节点地址映射适配
-
发布订阅 PubSub(已完成) -
RedisStream 多消费组(已完成) -
Garnet 服务器类型检测(已完成)
欢迎通过 Issue / PR 参与投票或补充需求。
竞品对比
| 能力 | NewLife.Redis | StackExchange.Redis | FreeRedis | 备注 |
|---|---|---|---|---|
| .NET Framework 4.5 | ✅ | ❌(4.6.1+) | ❌ | 工控 / 政务遗留系统关键 |
| 连接模型 | 连接池 | 多路复用 | 连接池 | 各有适用场景 |
| 命令覆盖率 | ~75% | ~95% | ~98% | 规划提升至 90%+ |
| 内置消息队列封装 | ✅ 完整 | ❌ | 🔄 部分 | 可靠 / 延迟队列独有 |
| 内置序列化 | ✅ | ❌ 手动 | ❌ 手动 | 降低样板代码 |
| 云厂商专项适配 | ✅(阿里/腾讯/华为) | 通用 | 通用 | 有专项文档 |
| Garnet 显式适配 | ✅ | ❌ | ❌ | 类型检测 + 降级 |
| kvrocks 适配 | ✅ | ❌ | ❌ | 自动识别 |
| APM 追踪 | ITracer 接口 | ActivitySource | ❌ | 可对接 OpenTelemetry |
| RESP3 | 🔄 | ✅ | ✅ | SE.Redis 已支持 |
详细分析见 竞品分析文档。
新生命项目矩阵
| 项目 | 说明 |
|---|---|
| NewLife.Core | 核心库,日志 / 配置 / 缓存 / 序列化 / APM |
| NewLife.XCode | 大数据 ORM,百亿级 + 分表 + 读写分离 |
| NewLife.Net | 超高性能网络库(千万级吞吐) |
| Stardust | 分布式服务 / 配置 / 注册 / 发布中心 |
| AntJob | 分布式计算 & 调度平台 |
| NewLife.RocketMQ | RocketMQ 纯托管客户端 |
完整矩阵、企业级解决方案与商业支持请访问:https://newlifex.com
贡献指南 & 社区
- 提交前阅读仓库
.github/copilot-instructions.md(编码规范 & 审核清单) - PR:保持最小变更、添加必要注释与测试说明
- Issue:提供版本、运行环境、最小复现场景
社区:QQ 群 1600800 / 1600838;GitHub Discussions / Issues 参与答疑。
许可证
MIT License。可自由商用 / 修改 / 再发行(无需额外授权)。保留版权声明即可。
新生命开发团队
团队自 2002 年迄今,维护 80+ .NET / IoT / 分布式相关开源项目,NuGet 累计下载超 400 万。产品与组件已广泛服务于电力、物流、工业控制、教育、通信、文博等行业。
网站:https://newlifex.com | 开源:https://github.com/NewLifeX
微信公众号:
若本文档未覆盖你的使用场景,欢迎提交 Issue;一起让文档更完善!
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
| .NET Framework | net45 is compatible. net451 was computed. net452 was computed. net46 was computed. net461 is compatible. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.5
- NewLife.Core (>= 11.13.2026.301)
-
.NETFramework 4.6.1
- NewLife.Core (>= 11.13.2026.301)
-
.NETStandard 2.0
- NewLife.Core (>= 11.13.2026.301)
-
.NETStandard 2.1
- NewLife.Core (>= 11.13.2026.301)
NuGet packages (60)
Showing the top 5 NuGet packages that depend on NewLife.Redis:
| Package | Downloads |
|---|---|
|
NewLife.Extensions.Caching.Redis
Redis缓存扩展库,便于注入Redis |
|
|
NewLife.Redis.Extensions
Redis依赖注入扩展,支持IDistributedCache分布式缓存接口和IDataProtection数据保护,简化ASP.NET Core集成 |
|
|
Cszy.DistributedEventBus.NewLifeRedis
Package Description |
|
|
Wangcaisoft.DotNet.Util.Cache
A set of .NET 9/8/7/6/5/Standard 2.1/Standard 2.0 Memory/Redis Cache utilities(support .net framework 4.52/4.6/4.7/4.8). Please visit https://github.com/cuiwenyuan/DotNet.Util for more information |
|
|
Cszy.DistributedLock.NewLifeRedis
Package Description |
GitHub repositories (6)
Showing the top 6 popular GitHub repositories that depend on NewLife.Redis:
| Repository | Stars |
|---|---|
|
NewLifeX/X
Core basic components: log (file / network), configuration (XML / JSON / HTTP), cache (memory / redis), network (TCP / UDP / HTTP), RPC framework, serialization (binary / XML / JSON), APM performance tracking. 核心基础组件,日志(文件/网络)、配置(XML/Json/Http)、缓存(内存/Redis)、网络(Tcp/Udp/Http)、RPC框架、序列化(Binary/XML/Json)、APM性能追踪。
|
|
|
dorisoy/Dorisoy.Pan
Dorisoy.Pan 是基于 .NET 10 的跨平台文档管理系统,使用 MS SQL 2012 / MySQL 8.0(或更高版本)后端数据库,您可以在 Windows、Linux 或 Mac 上运行它。项目中的所有方法都是异步的,支持 JWT 令牌身份验证,项目体系结构遵循 CQRS + MediatR 模式和最佳安全实践。源代码完全可定制,热插拔且清晰的体系结构,使开发定制功能和遵循任何业务需求变得容易。
|
|
|
NewLifeX/AntJob
高吞吐 .NET 分布式任务与实时数据调度平台:时间/数据/消息/Cron/SQL/脚本切片,自动重试与弹性扩缩,回溯补算 + Web 控制台。High‑throughput .NET distributed job & real‑time scheduler with fine‑grained slicing, retries, elastic scaling & web console.
|
|
|
NewLifeX/Stardust
星尘,轻量级分布式服务框架。配置中心、集群管理、远程自动发布、服务治理。服务自动注册和发现,负载均衡,动态伸缩,故障转移,性能监控。
|
|
|
NewLifeX/XCoder
新生命码神工具,代码生成、网络工具、API工具、串口工具、正则工具、图标工具、加解密工具、地图接口。
|
|
|
beetlex-io/BeetleX.Redis
A high-performance async/non-blocking redis client components for dotnet core,default data formater json protobuf and messagepack,support ssl
|
| Version | Downloads | Last Updated |
|---|---|---|
| 6.5.2026.307-beta1435 | 114 | 3/7/2026 |
| 6.5.2026.305-beta0003 | 126 | 3/5/2026 |
| 6.5.2026.303 | 242 | 3/3/2026 |
| 6.5.2026.303-beta0003 | 116 | 3/3/2026 |
| 6.4.2026.215-beta1300 | 137 | 2/15/2026 |
| 6.4.2026.201 | 617 | 2/1/2026 |
| 6.4.2026.201-beta0322 | 131 | 2/1/2026 |
| 6.4.2026.111-beta1644 | 202 | 1/11/2026 |
| 6.4.2026.104 | 1,520 | 1/4/2026 |
| 6.4.2025.1230-beta0419 | 144 | 12/30/2025 |
| 6.4.2025.1227-beta0356 | 174 | 12/27/2025 |
| 6.4.2025.1216-beta1109 | 337 | 12/16/2025 |
| 6.4.2025.1216-beta0004 | 323 | 12/16/2025 |
| 6.4.2025.1214-beta1244 | 223 | 12/14/2025 |
| 6.4.2025.1206-beta0241 | 214 | 12/6/2025 |
| 6.4.2025.1119-beta1619 | 503 | 11/19/2025 |
| 6.4.2025.1113 | 2,123 | 11/13/2025 |
支持RESP3协议并优化核心性能分配;增强Garnet兼容性识别与文档;新增RedisSwitch示例并重构基准测试与文档体系