我正在使用Azure Redis缓存保存一些数据,并使用IRedisLexicographicSet以“自动完成”类型的功能读取该数据。下面的代码可以正常工作:
var context = new CachingFramework.Redis.RedisContext(ConfigurationManager.AppSettings["CacheConnection"].ToString());
CachingFramework.Redis.Contracts.RedisObjects.IRedisLexicographicSet lex = context.Collections.GetRedisLexicographicSet("autocomplete");
IEnumerable<string> suggestions = lex.AutoComplete(enteredText.ToUpper());
问题在于,“自动完成”仅在右侧(字符串*)使用通配符,而我需要在左侧和右侧(*字符串*)使用。
根据我的阅读,我想使用“匹配”功能,但是当我将代码更改为
var context = new CachingFramework.Redis.RedisContext(ConfigurationManager.AppSettings["CacheConnection"].ToString());
CachingFramework.Redis.Contracts.RedisObjects.IRedisLexicographicSet lex = context.Collections.GetRedisLexicographicSet("autocomplete");
IEnumerable<string> suggestions = lex.Match("*" + enteredText.ToUpper() + "*");
我得到了错误:
执行ZSCAN自动完成的超时,inst:0,mgr:无效,err:永不,队列:1,qu:1,qs:0,qc:0,wr:0,wq:1,in:0,ar: 0,clientName:D100169,serverEndpoint:Unspecified / taxweb.redis.cache.windows.net:6380,keyHashSlot:16074,IOCP:(Busy = 0,Free = 1000,Min = 8,Max = 1000),WORKER:(Busy = 3,Free = 8188,Min = 8,Max = 8191)(请查看本文,了解一些可能导致超时的常见客户端问题:http://stackexchange.github.io/StackExchange.Redis/Timeouts)
执行时间几乎是即时的,从时间上来说并不是超时。
我已阅读错误消息中的链接,但仍不确定解决方案是什么。我尝试将“ syncTimeout = 600000”添加到连接字符串中,但这也无法解决。
没有什么帮助? 谢谢。