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

Увеличаване на стотици броячи наведнъж, redis или mongodb?

В зависимост от начина, по който е изложена вашата ключова структура, бих препоръчал конвейериране на командите zincr. Имате лесен тригер "commit" - заявката. Ако трябва да преглеждате параметрите си и да цинкирате всеки ключ, тогава в края на заявката предайте командата за изпълнение, това ще бъде много бързо. Внедрил съм система, както описваш и като cgi, и като приложение на Django. Създадох ключова структура по следния начин:

ГГГГ-ММ-ДД:ЧЧ:ММ -> сортиран набор

И успя да обработи нещо като 150 000-200 000 стъпки в секунда от страната на redis с един-единствен процес, който би трябвало да е достатъчен за вашия описан сценарий. Тази ключова структура ми позволява да вземам данни въз основа на прозорци от време. Добавих и срок на валидност към ключовете, за да избегна писането на процес на почистване на db. След това имах cronjob, който изпълняваше операции за настройване за "набиране" на статистики в почасови, ежедневни и седмични, използвайки варианти на гореспоменатия ключов модел. Представям тези идеи, тъй като те са начини, по които можете да се възползвате от вградените възможности на Redis, за да направите страната за отчитане по-лесна. Има и други начини да го направите, но този модел изглежда работи добре.

Както е отбелязано от eyossi, глобалното заключване може да бъде истински проблем със системи, които извършват едновременно запис и четене. Ако пишете това като система в реално време, едновременността може да е проблем. Ако това е система за синтактичен анализ на дневника „end if day“, тогава тя вероятно няма да задейства спора, освен ако не стартирате множество копия на анализатора или отчети по време на въвеждане. По отношение на поддържането на бързо четене В Redis бих помислил да настроя екземпляр на redis само за четене, подчинен на основния. Ако го поставите на сървъра, изпълняващ отчета, и насочите процеса на отчитане към него, трябва да бъде много бързо генерирането на отчетите.

В зависимост от наличната ви памет, размера на набора от данни и дали съхранявате друг тип данни в екземпляра на redis, може да помислите за стартиране на 32-битов сървър за redis, за да намалите използването на паметта. Инстанция 32b трябва да може да съхранява много от този тип данни в малка част от паметта, но ако изпълнявате нормалния 64-битов Redis не отнема твърде много памет, не се колебайте да го използвате. Както винаги тествайте собствените си модели на използване, за да потвърдите



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Управление на връзки

  2. blpop спира обработката на опашката след известно време

  3. възможно ли е да се извикат lua функции, дефинирани в други lua скриптове в redis?

  4. Как да внедря мултинаемане за Redis при пролетно зареждане

  5. redis + gevent - Лоша производителност - какво правя нередно?