ServiceStack.Redis:使用redisClient.StoreAll()存储的对象属性查询对象的子集

时间:2016-06-26 02:23:08

标签: servicestack.redis

我有POCO对象列表(~80k)。我尝试了不同的方法在Redis中存储这些对象。

请参阅http://docs.servicestack.net/redis-client/redis-client处的redisClient.StoreAll()。要检索所有存储的对象,请执行redisClient.GetAll()。我想知道如何根据标准查询对象的子集。

1 个答案:

答案 0 :(得分:0)

由于Redis中的数据通常是通过密钥访问而且Redis没有明确支持查询对redis有效不透明的值,因此不清楚查询的含义。

我建议您阅读以前的答案store related objects in Redis using the ServiceStack.Redis client。其中显示了如何使用索引创建类型之间的关系。

如果您只想搜索密钥,可以使用Redis Scan APIs,例如:

var userKeyPattern = IdUtils.CreateUrn<User>("*"); //= urn:User:*
var scanUsers = Redis.ScanAllKeys(userKeyPattern);
//Stop after retrieving 10000 user keys 
var sampleUsers = scanUsers.Take(10000).ToList(); 

但是除非您创建自定义LUA脚本来解析JSON值有效负载,否则无法对Redis值进行自定义adhoc服务器端查询。您需要为要维护的所有关系创建自定义索引,否则您需要在客户端上获取结果并在内存中查询它们。