Stackexchange.Redis 支持 XX|NX|CH?

Stackexchange.Redis support for XX|NX|CH?

stackexchange.redis是否支持 ZADD 的 NX 和其他相关开关? 我查看了文档、单元测试和代码,但找不到任何参考资料。如果有人可以阐明如何在不支持的情况下实现它,那就太好了

据我所知,这并没有在 SE.Redis 的最新稳定版本上实现。

但是你仍然可以使用ScriptEvaluate来执行任意redis命令,例如:

var ctx = ConnectionMultiplexer.Connect("...");
var db = ctx.GetDatabase();
db.ScriptEvaluate("return redis.call('zadd', KEYS[1], unpack(ARGV))", 
    new RedisKey[] { "key" }, 
    new RedisValue[] { "NX", 12.34, "member" });

您还可以使用构建在 SE.Redis 之上的 CachingFramework.Redis 库,因为 SortedSet 命令已经处理了 NX/XX 开关,例如:

var context = new CachingFramework.Redis.Context();
var sset = context.Collections.GetRedisSortedSet<string>("key");
sset.Add(12.34, "member", When.NotExists);