1

我正在尝试在 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 *模式*

我错过了什么?

谢谢

4

1 回答 1

0

在 windows 上运行 Redis时遇到了同样的问题,我认为这是因为 StackExchange.Redis 库在您运行beta版本时无法解析服务器返回的 Redis 版本,所以它假定 Redis 的较低版本没有't 包含 HSCAN 命令。

就我而言,服务器返回以下字符串作为 Redis 版本:

3.0.300-beta1

当 SE.Redis 尝试解析版本字符串(ResultProcessor.cs)时:

Version version;
if (Version.TryParse(val, out version))
{
    server.Version = version;
    server.Multiplexer.Trace("Auto-configured version: " + version);
}

由于版本字符串的-beta1部分,将无法解析版本号,因为该参数应具有MSDN上所述的以下格式:

主要.次要[.build[.revision]]

尝试运行非 beta 版本的 redis。

我刚刚在 SE.Redis github 上打开了一个关于此的问题。

于 2016-07-31T18:40:57.870 回答