如何获取具有偏移量和限制的predis数据?

时间:2018-07-03 00:35:11

标签: php redis predis

我使用predis hset库将我的数据作为编码数据存储在Redis中。 因此数据以哈希名称(例如myHash

)存储在数据库之一中
field = integer
value = encoded data..

例如

1    {'pk_id':1,'name' : 'test1'}
2    {'pk_id':2,'name' : 'test2'}
3    {'pk_id':3,'name' : 'test3'}
...and so on...

大约有40万行整数字段及其编码数据。 有没有办法用offset和limit拉取这些数据? 因为如果我这样做,例如

$predisObj->hgetall('myHash');

它提取所有内容,并且由于数据过多,浏览器崩溃

1 个答案:

答案 0 :(得分:0)

predis与redis共享命令列表,因为它是redis存储的php接口。因此,您可以使用标准的redis命令来满足您的需求:

实现所需目标的最佳方法是SCAN command 来自predis documentation

// === Keyspace iterator based on SCAN ===
echo 'Scan the keyspace matching only our prefixed keys:', PHP_EOL;
foreach (new Iterator\Keyspace($client, 'predis:*') as $key) {
    echo " - $key", PHP_EOL;
}

此命令将返回一个迭代器,因此内存问题不再重要。