我ServiceStack.Redis
在C#上使用客户端.
我使用模式b :: RecId :: 1使用以下模式a :: name :: 1和类型2的 1,100万条记录添加了大约500万个type1记录.
现在我使用redis类型的客户端作为client = redis.As
.我想检索type2的所有键.我使用以下模式:
var keys = client.SearchKeys("b::RecID::*");
但是需要永久(大约3-5分钟)来检索密钥.
有没有更快,更有效的方法来做到这一点?
您应该努力避免扫描密钥空间.KYES
实际上是一个服务器塞子,但即使你有SCAN
可用:不要这样做.现在,你可以选择保留的您有可用的东西按键设置某个地方,但没有SRANGE
等-在第2,你不得不使用SMEMBERS
,它仍然会需要返回数百万条记录-但至少它们都将可用.在以后的服务器版本中,您可以访问SCAN
(think :) KEYS
和SSCAN
(think :) SMEMBERS
,但最终您只需要数百万行,而这些行永远不会自由.
如果可能,您可以通过使用主/从对来减轻影响,并在从站上运行昂贵的操作.至少其他客户端可以在您杀死服务器时执行某些操作.