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

Redis Pub/Sub с надеждност

Когато абонат (потребител) умре, вашият списък ще продължи да расте, докато клиентът се върне. Вашият производител може да отреже списъка (от двете страни), след като достигне определен лимит, но това е нещо, с което ще трябва да се справите на ниво приложение. Ако включите времева марка във всяко съобщение, вашият потребител може да действа според възрастта на съобщението, като приемем, че имате логика на приложението, която искате да приложите към възрастта на съобщението.

Не съм сигурен как неправилно формирано съобщение ще влезе в системата, тъй като връзката с Redis обикновено е TCP с нейните гаранции за цялост. Но ако това се случи, може би поради грешка в кодирането на съобщения в слоя производител, можете да предоставите общ механизъм за обработка на грешки, като поддържате опашка на производител, който е получил съобщения за изключение на потребителя.

Правилата за повторен опит ще зависят до голяма степен от нуждите на вашето приложение. Ако имате нужда от 100% увереност, че съобщението е получено и обработено, тогава трябва да помислите за използването на транзакции на Redis (MULTI/EXEC), за да обгърнете работата, извършена от потребителя, така че можете да гарантирате, че клиентът няма да премахне съобщение, освен ако завърши работата си. Ако имате нужда от изрично потвърждение, тогава можете да използвате изрично съобщение за ACK на опашка, посветена на процеса(ите) на производителя.

Без да знаете повече за нуждите на вашето приложение, е трудно да знаете как да изберете разумно. Като цяло, ако вашите съобщения изискват пълна ACID защита, тогава вероятно ще трябва да използвате и транзакции на redis. Ако вашите съобщения са смислени само когато са навременни, тогава транзакциите може да не са необходими. Звучи така, сякаш не можете да толерирате пропуснати съобщения, така че вашият подход за използване на списък е добър. Ако трябва да внедрите приоритетна опашка за вашите съобщения, можете да използвате сортирания набор (Z-командите), за да съхранявате съобщенията си, като използвате техния приоритет като стойност на резултата, заедно с потребител на анкета.



  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Python &Redis:Най-добри практики за приложения за мениджър/работник

  2. Redis като база данни

  3. Как може Redis да сортира според два различни сортирани набора?

  4. ServiceStack.Net Redis:Съхранение на свързани обекти срещу идентификатори на свързани обекти

  5. Как да съхранявате обобщен резултат от търсене в дърво на каталога в Redis