2015-04-27 2 views
0

В настоящее время я использую Jedis для извлечения моих данных с сервера базы данных redis. Мне нужно переместить эти данные в MySQL. На сервере redis есть миллионы записей. Используя приведенные ниже высказывания можно скопировать данные в наборе:Как обеспечить потребление памяти не масштабируется с размером базы данных redis

String pattern = "users*";//All keys starting with users 
Set<String> users = jedis.keys(pattern)//Read all the keys in to set 

Теперь мой users набор все записи. Но может быть миллион записей, которые соответствуют моему шаблону в базе данных redis. Это в конечном итоге поглотит всю мою память. Как я могу сделать некоторые вещи, как ниже

for(All the keys that match my pattern){  
    Set<String> set = get current to (current+10000) records from server 
    ...Code to push 10K records to MySQL... 
    current = current + 10001; 
} 

Или предложите, если есть элегантный подход к этому

+1

Посмотрите на реализацию Jedis API «SCAN» Redis. –

+1

@ItamarHaber Спасибо большое! Это помогло –

ответ

1

Да, вы можете. Используйте команду SCAN. Посмотрите на Jedis Scan Test для примеров использования.

+0

Спасибо @misterion, это помогло. –