Redis
 sql >> база данни >  >> NoSQL >> Redis

Как ефективно да вмъкнете милиард данни в Redis?

Няколко точки относно въпроса и примерния код.

  1. Pipelining не е сребърен куршум - трябва да разберете какво прави, преди да го използвате. Това, което прави тръбопровода, е да групира няколко операции, които се изпращат като групово, както и отговорът им от сървъра. Това, което печелите, е, че времето за двупосочно пътуване на мрежата за всяка операция се заменя с това на партидата. Но партидите с безкрайни размери са истинско източване на ресурси - трябва да поддържате размера им достатъчно малък, за да бъдат ефективни. Като правило обикновено се опитвам да се стремя към 60KB на конвейер и тъй като всички данни са различни, броят на действителните операции в конвейера е различен. Ако приемем, че вашият ключ и неговата стойност са ~1KB, трябва да извикате pipeline.execute() на всеки 60 операции.

  2. Освен ако грубо не разбирам, този код не трябва да се изпълнява. Използвате HMSET сякаш е SET , така че по същество ви липсва съпоставянето на поле->стойност на хешовете. Хешове (HMSET ) и низове (SET ) са различни типове данни и следователно трябва да се използват съответно.

  3. Изглежда, сякаш този един малък цикъл отговаря за целия "милиард данни" - ако това е така, не само вашият сървър, изпълняващ кода, ще се разменя като луд, освен ако няма много RAM, за да държи речника, също би било много неефективно (независимо от скоростта на Python). Трябва да паралелизирате вмъкването на данни, като стартирате няколко екземпляра на този процес.

  4. Свързвате ли се с Redis дистанционно? Ако е така, мрежата може да ограничава производителността ви.

  5. Помислете за настройките на вашия Redis – може би те могат да бъдат настроени/настроени за по-добра производителност за тази задача, като се приеме, че това наистина е тясно място.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Определяне защо Redis получава SIGTERM на всяка минута или две

  2. ScaleGrid хостинг за Redis™ на вашия собствен акаунт в AWS

  3. Точност на командата redis dbsize

  4. грешка при свързване на redis в контейнера за докер

  5. Каква е най-добрата стратегия за синхронизиране на Redis данни с MySQL?