ServiceStack.Redis:通过使用 redisClient.StoreAll() 存储的对象属性查询对象子集
ServiceStack.Redis: Query a subset of objects by object properties stored using redisClient.StoreAll()
我有 POCO 对象列表 (~80k)。我尝试过不同的方法将这些对象存储在 Redis 中。
请参阅 http://docs.servicestack.net/redis-client/redis-client 中的 redisClient.StoreAll()。为了检索所有存储的对象,您需要执行 redisClient.GetAll()。我想知道如何根据条件查询对象子集。
不清楚您所说的查询是什么意思,因为 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();
但是您不能对 Redis 值进行自定义即席服务器端查询,除非您创建自定义 LUA 脚本来解析 JSON 值负载。您需要为要维护的所有关系创建自定义索引,否则您将需要在客户端获取结果并在内存中查询它们。
我有 POCO 对象列表 (~80k)。我尝试过不同的方法将这些对象存储在 Redis 中。
请参阅 http://docs.servicestack.net/redis-client/redis-client 中的 redisClient.StoreAll()。为了检索所有存储的对象,您需要执行 redisClient.GetAll()。我想知道如何根据条件查询对象子集。
不清楚您所说的查询是什么意思,因为 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();
但是您不能对 Redis 值进行自定义即席服务器端查询,除非您创建自定义 LUA 脚本来解析 JSON 值负载。您需要为要维护的所有关系创建自定义索引,否则您将需要在客户端获取结果并在内存中查询它们。