ServiceStack.Redis SearchKeys

alp*_*der 1 redis servicestack.redis

我ServiceStack.Redis在C#上使用客户端.

我使用模式b :: RecId :: 1使用以下模式a :: name :: 1和类型2的 1,100万条记录添加了大约500万个type1记录.

现在我使用redis类型的客户端作为client = redis.As<String>.我想检索type2的所有键.我使用以下模式:

var keys = client.SearchKeys("b::RecID::*");
Run Code Online (Sandbox Code Playgroud)

但是需要永久(大约3-5分钟)来检索密钥.

有没有更快,更有效的方法来做到这一点?

Mar*_*ell 5

您应该努力避免扫描密钥空间.KYES实际上是一个服务器塞子,但即使你有SCAN可用:不要这样做.现在,你可以选择保留的您有可用的东西按键设置某个地方,但没有SRANGE等-在第2,你不得不使用SMEMBERS,它仍然会需要返回数百万条记录-但至少它们都将可用.在以后的服务器版本中,您可以访问SCAN(think :) KEYS和SSCAN(think :) SMEMBERS,但最终您只需要数百万行,而这些行永远不会自由.

如果可能,您可以通过使用主/从对来减轻影响,并在从站上运行昂贵的操作.至少其他客户端可以在您杀死服务器时执行某些操作.