2016-07-29 67 views
1

我試圖運行的Redis的HSCAN命令無法使用Stackexchange Redis的

這是代碼的樣子

只匹配,它們通過C#所需要的哈希領域從.net調用HSCAN與模式
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

運行Redis on windows時,我有同樣的問題,我想這是因爲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一部分,是該參數應該有FO作爲MSDN指出llowing格式:

MAJOR.MINOR [.build [.revision]]

嘗試運行redis的一個非測試版本。

我剛剛在SE.Redis github上打開了關於此的issue

+0

謝謝 這可能是問題 你是如何解讀twemproxy服務器返回的內容的? 當我查看多路複用器服務器版本(這是我假設的默認設置)時,我確實看到版本爲「2.0」 但我不確定在哪裏看到它是3.0300-beta(或同等版本) –

+0

使用** redis-cli **連接到您的Redis服務器並運行命令** INFO SERVER **,您應該看到版本字符串 – thepirat000

+0

服務器上的Redis版本是3.2.0。 但出於某種原因SE似乎它默認爲2.0 NET中 爲了做這個 VAR選項=新ConfigurationOptions { 端點= {「redis的端點」}, 代理= Proxy.None周圍現在得到 }; –

相關問題