![]() |
VOOZH | about |
dotnet add package BugFree.CSRedisCore.Extension --version 1.0.250817.1009
NuGet\Install-Package BugFree.CSRedisCore.Extension -Version 1.0.250817.1009
<PackageReference Include="BugFree.CSRedisCore.Extension" Version="1.0.250817.1009" />
<PackageVersion Include="BugFree.CSRedisCore.Extension" Version="1.0.250817.1009" />Directory.Packages.props
<PackageReference Include="BugFree.CSRedisCore.Extension" />Project file
paket add BugFree.CSRedisCore.Extension --version 1.0.250817.1009
#r "nuget: BugFree.CSRedisCore.Extension, 1.0.250817.1009"
#:package BugFree.CSRedisCore.Extension@1.0.250817.1009
#addin nuget:?package=BugFree.CSRedisCore.Extension&version=1.0.250817.1009Install as a Cake Addin
#tool nuget:?package=BugFree.CSRedisCore.Extension&version=1.0.250817.1009Install as a Cake Tool
基于 CSRedisCore 的强类型扩展,提供 List/Hash/Set/SortedSet/GEO 的便捷包装,以及多种 Redis 队列(简单队列、可靠队列、延迟队列、Stream 消费组)。
依赖:
.csproj 中添加 ProjectReference 指向本项目输出说明:包名/发布源视你的实际发布而定,这里不固定给出公共源地址。
using CSRedis;
var redis = new CSRedisClient("127.0.0.1:6379,password=,defaultDatabase=0,poolsize=50,ssl=false,writeBuffer=10240");
using BugFree.CSRedisCore.Extension;
using BugFree.CSRedisCore.Extension.Collection;
// List
var list = redis.GetList<string>("demo:list");
list.Add("a");
list.Add("b");
var first = list[0];
// Hash
var dict = redis.GetDictionary<int>("demo:hash");
dict["age"] = 18;
var hasAge = dict.ContainsKey("age");
// Set
var set = redis.GetSet<string>("demo:set");
set.Add("x");
var exists = set.Contains("x");
// SortedSet
var zset = redis.GetSortedSet<string>("demo:zset");
zset.Add("alice", 100);
zset.Add(new[]{"bob","carl"}, 80);
var score = zset.GetScore("alice");
注意:
RedisList.Contains/IndexOf为避免 O(N) 长扫描,当元素数量 > 1000 会抛出不支持异常。
var geo = redis.GetGeo<string>("demo:geo");
// 添加点(member, lng, lat)
geo.Add("A", 116.397128m, 39.916527m);
geo.Add("B", 121.473701m, 31.230416m);
// 距离(单位:m/km/ft/mi)
var dist = geo.Dist("A", "B", CSRedis.GeoUnit.km);
// 位置与哈希
var pos = geo.GeoPos("A", "B"); // (lng, lat)?[] 与入参顺序一一对应
var hash = geo.GeoHash("A", "B");
// 半径查询:按坐标或按成员
var members1 = geo.Radius(116.40m, 39.91m, 5m, CSRedis.GeoUnit.km, count: 10, asc: true);
var members2 = geo.RadiusByMember("A", 5m, CSRedis.GeoUnit.km, count: 10, asc: true);
所有队列都在命名空间 BugFree.CSRedisCore.Extension 下,统一提供:
Add(params T[] values) 入队TryDequeue(out MessageContext<T>? msg, TimeSpan? blockTimeout = null, CancellationToken cancel = default) 出队ConsumeAsync(Func<MessageContext<T>, CancellationToken, Task<bool>> handler, ConsumptionOptions? options = null) 简单消费循环using BugFree.CSRedisCore.Extension;
// 简单队列(无 ACK)
var q = redis.GetQueue<string>("demo:q");
q.Add("job1", "job2");
if (q.TryDequeue(out var msg))
{
Console.WriteLine(msg!.Value);
}
// 可靠队列(ACK/NACK)
var rq = redis.GetReliableQueue<string>("demo:rq");
rq.Add("job");
if (rq.TryDequeue(out var m))
{
try
{
// 处理...
rq.Ack(m!);
}
catch
{
rq.Nack(m!, requeue: true);
}
}
// 延迟队列(ZSet 到期 + processing)
var dq = redis.GetDelayQueue<string>("demo:dq", defaultDelay: TimeSpan.FromSeconds(3));
dq.Add("later");
// 3s 后到期可取到
if (dq.TryDequeue(out var dmsg, TimeSpan.FromSeconds(5)))
{
// 处理成功
dq.Ack(dmsg!);
}
// Stream 消费组队列
var sq = redis.GetStream<string>("demo:stream", group: "g1", consumer: "c1");
// 入队:使用 类内 Add(字段名固定为 value)
sq.Add("s1");
// 消费:TryDequeue + Ack
if (sq.TryDequeue(out var smsg, TimeSpan.FromSeconds(1)))
{
// 处理...
sq.Ack(smsg!);
}
提示:
ConsumeAsync提供了最简消费循环;可靠/延迟/Stream 模式下返回 true 通常表示处理成功(将 Ack),异常或 false 则 Nack 或忽略。
GeoPos 返回与入参顺序一一对应的经纬度。csproj 为准。LICENSE| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 net5.0 is compatible. net5.0-windows net5.0-windows was computed. net6.0 net6.0 is compatible. net6.0-android net6.0-android was computed. net6.0-ios net6.0-ios was computed. net6.0-maccatalyst net6.0-maccatalyst was computed. net6.0-macos net6.0-macos was computed. net6.0-tvos net6.0-tvos was computed. net6.0-windows net6.0-windows was computed. net7.0 net7.0 is compatible. net7.0-android net7.0-android was computed. net7.0-ios net7.0-ios was computed. net7.0-maccatalyst net7.0-maccatalyst was computed. net7.0-macos net7.0-macos was computed. net7.0-tvos net7.0-tvos was computed. net7.0-windows net7.0-windows was computed. net8.0 net8.0 is compatible. net8.0-android net8.0-android was computed. net8.0-browser net8.0-browser was computed. net8.0-ios net8.0-ios was computed. net8.0-maccatalyst net8.0-maccatalyst was computed. net8.0-macos net8.0-macos was computed. net8.0-tvos net8.0-tvos was computed. net8.0-windows net8.0-windows was computed. net9.0 net9.0 is compatible. net9.0-android net9.0-android was computed. net9.0-browser net9.0-browser was computed. net9.0-ios net9.0-ios was computed. net9.0-maccatalyst net9.0-maccatalyst was computed. net9.0-macos net9.0-macos was computed. net9.0-tvos net9.0-tvos was computed. net9.0-windows net9.0-windows was computed. net10.0 net10.0 was computed. net10.0-android net10.0-android was computed. net10.0-browser net10.0-browser was computed. net10.0-ios net10.0-ios was computed. net10.0-maccatalyst net10.0-maccatalyst was computed. net10.0-macos net10.0-macos was computed. net10.0-tvos net10.0-tvos was computed. net10.0-windows net10.0-windows was computed. |
Showing the top 1 NuGet packages that depend on BugFree.CSRedisCore.Extension:
| Package | Downloads |
|---|---|
|
BugFree.Controllers.Api
Package Description |
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.0.250817.1009 | 214 | 8/17/2025 |
| 1.0.250817.958-beta0958 | 186 | 8/17/2025 |
| 1.0.250328.1105-beta1105 | 211 | 3/28/2025 |
| 1.0.250328.1026-beta1026 | 204 | 3/28/2025 |
| 1.0.250328.917-beta0917 | 200 | 3/28/2025 |
| 1.0.250327.1725-beta1725 | 192 | 3/27/2025 |
CSRedisCore;扩展包;