我正在尝试在Redis中运行HSCAN命令以仅匹配通过C#
所需的哈希字段这就是代码的样子
var options = new ConfigurationOptions
{
EndPoints = { "endpoint" },
Proxy = Proxy.Twemproxy
};
twemproxy_new = ConnectionMultiplexer.Connect(options);
db = twemproxy_new.GetDatabase();
Dictionary<string,string> inputDict = new Dictionary<string, string>();
// populate inputDict with "n" fields & values
var cachekey = "my_hash";
db.GetDatabase().HashSet(cachekey, inputDict, CommandFlags.FireAndForget);
db.HashScan(cacheKey, "*9*");
// this is where it fails with the exception
// Command is not available on your server: HSCAN
但是当我在twemproxy服务器上运行HSCAN命令时,它似乎按预期工作
HSCAN cache_Key 0 MATCH *pattern*
我错过了什么?
由于
答案 0 :(得分:0)
运行Redis on windows时遇到同样的问题,我认为这是因为当您运行 beta 时,StackExchange.Redis库无法解析服务器返回的Redis版本版本,因此它假设Redis的较低版本不包含HSCAN命令。
在我的情况下,服务器返回以下字符串作为Redis版本:
<强> 3.0.300-β1强>
当SE.Redis尝试解析版本字符串(ResultProcessor.cs)时:
Version version;
if (Version.TryParse(val, out version))
{
server.Version = version;
server.Multiplexer.Trace("Auto-configured version: " + version);
}
由于版本字符串的 -beta1 部分,将无法解析版本号,因为参数应具有MSDN中所述的以下格式:
<强> MAJOR.MINOR [.build [.revision]] 强>
尝试运行redis的非beta版本。
我刚刚在SE.Redis github上打开了issue。