1

我正在使用 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: Inactive, err: never, queue: 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”添加到连接字符串中,但这也没有解决它。

一点帮助?谢谢。

4

0 回答 0