SyZero.Redis 10.0.0

dotnet add package SyZero.Redis --version 10.0.0
                    
NuGet\Install-Package SyZero.Redis -Version 10.0.0
                    
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="SyZero.Redis" Version="10.0.0" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="SyZero.Redis" Version="10.0.0" />
                    
Directory.Packages.props
<PackageReference Include="SyZero.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 SyZero.Redis --version 10.0.0
                    
#r "nuget: SyZero.Redis, 10.0.0"
                    
#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 SyZero.Redis@10.0.0
                    
#: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=SyZero.Redis&version=10.0.0
                    
Install as a Cake Addin
#tool nuget:?package=SyZero.Redis&version=10.0.0
                    
Install as a Cake Tool

SyZero.Redis

SyZero.Redis 提供 Redis 缓存、分布式锁、Redis 服务管理和 Redis 事件总线能力。

📦 安装

dotnet add package SyZero.Redis

✨ 特性

  • 🚀 分布式缓存 - ICache 基于 Redis 实现
  • 🔒 分布式锁 - ILockUtil 基于 Redis 实现
  • 🔍 服务发现 - RedisServiceManagement 支持注册、发现、健康检查、Pub/Sub 通知
  • 📣 事件总线 - RedisEventBus 基于 Redis Pub/Sub 实现跨实例广播
  • 💾 多模式连接 - 支持主从、哨兵、集群模式

🚀 快速开始

1. 配置 appsettings.json

{
  "Redis": {
    "Type": "MasterSlave",
    "Master": "localhost:6379,password=123456,defaultDatabase=0",
    "Slave": []
  },
  "RedisServiceManagement": {
    "EnableHealthCheck": true,
    "EnableLeaderElection": true,
    "EnablePubSub": true
  },
  "RedisEventBus": {
    "ChannelPrefix": "SyZero:EventBus:"
  }
}

2. 注册服务

using SyZero;

var builder = WebApplication.CreateBuilder(args);

builder.AddSyZero();
builder.Services.AddSyZeroRedis(builder.Configuration);

// 可选:Redis 服务管理
builder.Services.AddRedisServiceManagement(builder.Configuration);

// 可选:Redis 事件总线
builder.Services.AddRedisEventBus(builder.Configuration);

var app = builder.Build();
app.UseSyZero();
app.Run();

📖 缓存与锁

public class UserService
{
    private readonly ICache _cache;
    private readonly ILockUtil _lockUtil;

    public UserService(ICache cache, ILockUtil lockUtil)
    {
        _cache = cache;
        _lockUtil = lockUtil;
    }

    public async Task<User> GetUserAsync(long id)
    {
        var cacheKey = $"user:{id}";
        var user = await _cache.GetAsync<User>(cacheKey);

        if (user == null)
        {
            user = await LoadFromDbAsync(id);
            await _cache.SetAsync(cacheKey, user, 1800);
        }

        return user;
    }

    public async Task CreateOrderAsync(string orderNo)
    {
        using (await _lockUtil.LockAsync($"order:{orderNo}", TimeSpan.FromSeconds(30)))
        {
            // 在锁内执行业务逻辑
        }
    }
}

📖 Redis 服务管理

RedisServiceManagement 适合简单分布式部署,支持:

  • 服务注册 / 注销
  • 心跳与健康检查
  • Leader 选举
  • Redis Pub/Sub 实时通知
builder.Services.AddSyZeroRedis(builder.Configuration);
builder.Services.AddRedisServiceManagement(builder.Configuration, options =>
{
    options.EnableHealthCheck = true;
    options.EnableLeaderElection = true;
    options.EnablePubSub = true;
});

📖 Redis 事件总线

RedisEventBus 基于 Redis Pub/Sub,适合需要跨实例广播、但不要求持久化和可靠重试的场景。

如果你需要持久化、重试或死信队列,请改用 DBEventBus 或 RabbitMQEventBus。

注册

builder.Services.AddSyZeroRedis(builder.Configuration);
builder.Services.AddRedisEventBus(builder.Configuration, options =>
{
    options.ChannelPrefix = "SyZero:EventBus:";
});

定义事件与处理器

using SyZero.EventBus;

public class OrderCreatedEvent : EventBase
{
    public long OrderId { get; set; }
}

public class OrderCreatedHandler : IEventHandler<OrderCreatedEvent>
{
    public Task HandleAsync(OrderCreatedEvent @event)
    {
        Console.WriteLine($"order created: {@event.OrderId}");
        return Task.CompletedTask;
    }
}

订阅与发布

public class OrderPublisher
{
    private readonly IEventBus _eventBus;

    public OrderPublisher(IEventBus eventBus)
    {
        _eventBus = eventBus;
        _eventBus.Subscribe<OrderCreatedEvent, OrderCreatedHandler>(() => new OrderCreatedHandler());
    }

    public Task PublishAsync(long orderId)
    {
        return _eventBus.PublishAsync(new OrderCreatedEvent
        {
            OrderId = orderId
        });
    }
}

📖 配置项

Redis

属性 类型 说明
Type MasterSlave / Sentinel / Cluster Redis 模式
Master string 主节点连接串或主服务名
Slave string[] 从节点列表
Sentinel string[] 哨兵节点列表

RedisServiceManagement

属性 默认值 说明
KeyPrefix syzero:services: 服务注册 Key 前缀
LeaderKeyPrefix syzero:leader: Leader 锁前缀
ServiceNamesKey syzero:service:names 服务名集合 Key
EnableHealthCheck true 是否启用健康检查
ServiceExpireSeconds 30 多久未心跳标记不健康
AutoCleanExpiredServices true 是否自动清理过期实例
EnableLeaderElection true 是否启用 Leader 选举
EnablePubSub true 是否启用服务变更通知

RedisEventBus

属性 默认值 说明
ChannelPrefix SyZero:EventBus: 事件总线频道前缀

⚠️ 注意事项

  1. RedisEventBus 使用 Pub/Sub,不提供事件持久化、重试和死信队列。
  2. 订阅关系保存在当前进程内,应用重启后需要重新执行订阅。
  3. 建议将订阅逻辑放在应用启动阶段或长期存活服务中,而不是高频短生命周期对象里重复订阅。

📄 许可证

MIT License - 详见 LICENSE

Product Compatible and additional computed target framework versions.
.NET net10.0 is compatible.  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 (1)

Showing the top 1 NuGet packages that depend on SyZero.Redis:

Package Downloads
SyZero.Gateway

SyZero-Gateway

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
10.0.0 98 10/23/2026
9.1.0 92 10/22/2026
1.2.0 86 10/22/2026
1.2.0-dev.1 54 10/22/2026
1.1.9 174 4/19/2026
1.1.9-dev.2 82 4/19/2026
1.1.9-dev.1 91 4/17/2026
1.1.8 139 4/17/2026
1.1.6 138 4/17/2026
1.1.6-dev.1 74 4/17/2026
1.1.5 155 4/13/2026
1.1.5-dev.3 88 4/13/2026
1.1.5-dev.2 102 2/11/2026
1.1.5-dev.1 100 1/29/2026
1.1.4 183 1/2/2026
1.1.4-dev.2 109 1/2/2026
1.1.4-dev.1 102 12/30/2025
1.1.3 169 12/30/2025
1.1.3-dev.6 102 12/30/2025
1.0.0 155 4/17/2026
Loading failed