Как убедиться, что потребление памяти не масштабируется с размером базы данных Redis

В настоящее время я использую Jedis для получения данных с сервера базы данных Redis. Мне нужно отправить эти данные в MySQL. На сервере 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;
}

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


person theja_swarup    schedule 27.04.2015    source источник
comment
Посмотрите на реализацию Jedis SCAN API Redis.   -  person Itamar Haber    schedule 28.04.2015
comment
@ItamarHaber Большое спасибо! Это помогло   -  person theja_swarup    schedule 29.04.2015


Ответы (1)


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

person misterion    schedule 28.04.2015
comment
Спасибо @misterion, это помогло. - person theja_swarup; 29.04.2015