Бесконечный цикл при использовании predis SCANPhp

Кемеровские программисты php общаются здесь
Ответить
Anonymous
 Бесконечный цикл при использовании predis SCAN

Сообщение Anonymous »

Я пытаюсь заменить функцию ключей из Predis для сканирования, чтобы повысить производительность при некотором анализе, который мы выполняем.

Проблема в том, что когда я при выполнении операции сканирования кажется, что она попадает в бесконечный цикл, что не имеет смысла, поскольку, согласно документации Redis, сканирование вернет итератор в 0, когда оно будет выполнено.

Код: Выделить всё

        $it = null;
$keysFound = [];

do {

$redisKeys = $redis->scan($it,"*{$query}", 10);

if (!empty($keys)) {
array_merge($keysFound, $redisKeys);
}
} while($it != 0);

Я просто хочу заменить его, чтобы мы этого не делали

Код: Выделить всё

$keys = $redis->keys("*{$query}");
Я перепробовал все, пожалуйста, помогите.

ОБНОВЛЕНИЕ
Проверяю интерфейс командной строки, который вижу что он никогда не находит ключ и остается в цикле, даже если я добавляю тот же самый ключ, который вижу в redsmin.

Код: Выделить всё

127.0.0.1:6379> scan 122880 MATCH x_dashboard_dashboard_row_1005_251
1) "118784"
2) (empty list or set)
127.0.0.1:6379> scan 118784 MATCH x_dashboard_dashboard_row_1005_251
1) "18432"
2) (empty list or set)
127.0.0.1:6379> scan 18432 MATCH x_dashboard_dashboard_row_1005_251
1) "59392"
2) (empty list or set)
127.0.0.1:6379> scan 59392 MATCH x_dashboard_dashboard_row_1005_251
1) "63488"
2) (empty list or set)
127.0.0.1:6379> scan 63488 MATCH x_dashboard_dashboard_row_1005_251
1) "123904"
2) (empty list or set)
127.0.0.1:6379> scan 123904 MATCH x_dashboard_dashboard_row_1005_251
1) "19456"
2) (empty list or set)
127.0.0.1:6379> scan 19456 MATCH x_dashboard_dashboard_row_1005_251
1) "121856"
2) (empty list or set)
127.0.0.1:6379> scan 121856 MATCH x_dashboard_dashboard_row_1005_251
1) "115200"
2) (empty list or set)
127.0.0.1:6379> scan 115200 MATCH x_dashboard_dashboard_row_1005_251
1) "119296"
2) (empty list or set)
127.0.0.1:6379> scan 119296 MATCH x_dashboard_dashboard_row_1005_251
1) "109056"
2) (empty list or set)
127.0.0.1:6379>
Возможно ли что-то настроено неправильно? Я никогда раньше не работал с Redis, поэтому не знаю, может ли это быть связано с неправильной конфигурацией.

РЕШЕНО
Проблема заключалась в том, что у нас очень большой количество ключей, поэтому увеличение значения COUNT до большего значения дало правильные результаты.

Подробнее здесь: https://stackoverflow.com/questions/597 ... redis-scan
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Php»