StackExchange.Redis中是否提供原始命令?

时间:2015-03-16 10:21:57

标签: c# redis stackexchange.redis

StackExchange.Redis中是否有任何功能允许您直接执行原始命令?就像我提供一个带有命令的字符串,例如(下面的假设代码):

conn.Send("ZADD mysortedset 1 john");

我知道几乎所有命令都有可用的方法,包括ZADD,但这不是重点。

1 个答案:

答案 0 :(得分:8)

介绍"模块"使这更具相关性;此API现在存在于Execute(...)中。请参阅:http://blog.marcgravell.com/2017/04/stackexchangeredis-and-redis-40-modules.html


此前:

目前还没有,而且我怀疑这个好处。特别是,这样做不允许在分片实例(twemproxy,redis-cluster等)上正确路由,不允许重命名命令映射用法,并且不允许二进制键/值使用。它还允许使用不当的风险和破坏概念的命令,例如selectwatch / multi / exec,阻止弹出brpop / blpop / brpoplpush - 所有这些对多路复用器都是灾难性的(好吧,select并不是很大,因为它可以配置为Send保留db undefined - 由于一些类似的例子,已经存在的代码)。它还会暴露一般库中永远不需要使用的危险命令:debug segfaultclient pause等 - 再次,所有非常糟糕的想法

但是可以肯定的是,从理论上来说可以完成 ...但我真的想要看到一个令人信服的理由来抵消上面的许多问题。

目前,执行ad-hoc命令的最常见方式是通过ScriptEvaluate - 当然会涉及编写Lua。