每个类别都有大量的对象。
我想把所有这些对象都用键作为类别 然后我想从这个键中获取前4个对象的详细信息,然后像在分页中一样获取接下来的4个。
为此,我尝试使用hkeys
存储所有具有类别的对象ID将所有obejctids放入hset:
hset mycategory objectdid1 "objectdid1"
hset mycategory objectdid2 "objectdid2"
hset mycategory objectdid3 "objectdid3"
将所有客观细节放在hmset中:
hmset objectdid1 title "george"
hmset objectdid2 title "george1"
hmset objectdid3 title "george2"
获取hkeys:
hkeys mycategory
我想要获得前2个键然后接下来2个想要运行分页。还有其他任何方式我可以实现这一切。谢谢!
答案 0 :(得分:2)
我相信你需要使用redis的scan功能
对于您的哈希集,您需要专门使用HSCAN。
只要确保count只控制行为,你也可以在调用扫描时得到0个键,因此只考虑返回光标时的扫描迭代重置
有关详细信息,请查看我附加的扫描文档链接。
示例代码
ScanParams params = new ScanParams();
params.count(2);
for (int i = 0; i < 10; i++) {
jedis.hset("foo", "a" + i, "a" + i);
}
ScanResult<Map.Entry<String, String>> result = jedis.hscan("foo", SCAN_POINTER_START, params);
assertFalse(result.getResult().isEmpty());
答案 1 :(得分:0)
您需要将序列化对象存储在哈希中,并在排序集或列表中添加这些对象标识符,然后分别使用zrange
或lrange
获取分页标识符,然后将它们传递给{ {1}}命令。
例如:
hmget
然后,为了从0到10个第一个对象获取页面:
zadd ordered 1 1, 2 2
hmset objects 1 "{ 'id': 1 }", 2 "{ 'id': 2 }"
一旦你已经获得有序的对象标识符:
zrange ordered 0 10