具有模式的 ServiceStack IRedisClient ScanAllKeys 未按预期返回结果 (ServiceStack 5.7.0)
Posted
技术标签:
【中文标题】具有模式的 ServiceStack IRedisClient ScanAllKeys 未按预期返回结果 (ServiceStack 5.7.0)【英文标题】:ServiceStack IRedisClient ScanAllKeys with a pattern does not return results as expected (ServiceStack 5.7.0) 【发布时间】:2021-12-29 18:28:41 【问题描述】:我已经使用 StackService.Redis 中的 IRedisClient 尝试了以下带有和不带有“*”通配符的代码。它不会像我预期的那样返回与模式匹配的键列表。我正在尝试搜索包含存储在 searchPattern 变量中的值但未返回任何结果的任何键。如果我遗漏了什么,请告诉我。
using var cache = BuildClient();
cacheKeyList = cache.ScanAllKeys($"*searchPattern*").Skip(skip).Take(take).ToList();
【问题讨论】:
【参考方案1】:提供给方法的ScanAllKeys
模式是匹配键的模式,而不是键所持有的值。
例如,如果您使用模式users:id
存储密钥,其中id
替换为用户的ID,例如users:1
,则扫描users:*
将返回与存储的用户匹配的所有密钥。
这个方法下面是调用 Redis SCAN 命令more info can be found in their documentation。
【讨论】:
以上是关于具有模式的 ServiceStack IRedisClient ScanAllKeys 未按预期返回结果 (ServiceStack 5.7.0)的主要内容,如果未能解决你的问题,请参考以下文章
使用 ServiceStack.ORMLite 的存储库模式中的事务
具有多个数据库服务器的 ServiceStack OrmLite
如何让 ServiceStack 序列化/反序列化具有正确类型的 expando 对象
ServiceStack.Text JsonSerializer 无法反序列化其自己的序列化模式(类型定义应以 '' SerializationException 开头)