как получить данные predis со смещением и лимитом? - PullRequest
0 голосов
/ 03 июля 2018

Я сохранил свои данные как закодированные данные в Redis, используя библиотеку predis hset. поэтому данные хранятся в одном из БД в хеш-имени, например, myHash

field = integer
value = encoded data..

* 1004 например *

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

было около 400k + строк целочисленного поля с их закодированными данными. Есть ли способ получить эти данные со смещением и ограничением? потому что, если я сделаю, например,

$predisObj->hgetall('myHash');

он вытаскивает все, и браузер падает из-за слишком большого количества данных

1 Ответ

0 голосов
/ 03 июля 2018

predis делится списком команд с redis, так как это интерфейс php для хранилища redis. Поэтому вы можете использовать стандартные команды redis для удовлетворения ваших потребностей:

Лучший способ добиться того, чего вы хотите - это Команда SCAN Из предисловия Документация :

// === 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;
}

Эта команда вернет итератор, поэтому проблемы с памятью больше не будут иметь значения.

...