【发布时间】:2017-04-02 06:55:49
【问题描述】:
假设我有“用户”存储桶。 我想从中获取所有用户或至少 10 个用户。
据我了解 riakc_pb_socket:get/3
第一个参数是PID,第二个是bucket,第三个是Key。
获取所有对象的一种方法是获取所有键,然后循环遍历它们,但据我所知,这是低效的方法。
还有其他方法吗?
【问题讨论】:
假设我有“用户”存储桶。 我想从中获取所有用户或至少 10 个用户。
据我了解 riakc_pb_socket:get/3
第一个参数是PID,第二个是bucket,第三个是Key。
获取所有对象的一种方法是获取所有键,然后循环遍历它们,但据我所知,这是低效的方法。
还有其他方法吗?
【问题讨论】:
您应该阅读有关 Riak 搜索和(可能)二级索引的文档:
https://docs.basho.com/riak/kv/2.1.4/developing/usage/search/
http://docs.basho.com/riak/kv/2.1.4/developing/usage/secondary-indexes/
如果您需要检索多个用户并且可以预先计算“前 10”列表,您可以将这 10 个用户的 ID 作为单独的对象存储在 Riak 中。然后,获取“前 10 个”对象,并并行获取 10 个用户对象。一般来说,这肯定会比上述任何一种方法都快。
【讨论】: