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

Какви са основните разлики между Redis Pub/Sub и Redis Stream?

Съхранение на данни

Pub/Sub е платформа за издател/абонат, а не за съхранение на данни. Публикуваните съобщения се изпаряват, независимо дали е имало абонат.

В Redis Streams потокът е тип данни, структура от данни сама по себе си. Съобщенията или записи се съхраняват в паметта и остават там до командата за изтриване.

Синхронизирана/Асинхронна комуникация (Push/Pull)

Pub/Sub е синхронна комуникация (push протокол). Всички страни трябва да бъдат активни едновременно, за да могат да комуникират. Тук Redis е чист брокер за синхронни съобщения.

Redis Streams позволяват и двете синхронни (XREAD с BLOCK и специалният $ Идентификаторът е натискане протокол) и асинхронна комуникация (обикновена XREAD е встапване протокол). XREAD с BLOCK е като Pub/Sub, но с възможност за възобновяване при прекъсване на връзката без загуба на съобщения.

Семантика на доставка

Pub/Sub е най-много веднъж, т.е. „изстреляйте и забравете“.

Redis Streams позволява както най-много веднъж, така и най-малко веднъж (изрично потвърждение, изпратено от получателя)

Режим на блокиране за потребители

Pub/Sub е само в режим на блокиране. След като се абонира за канал, клиентът се поставя в режим на абонати и не може да издава команди (с изключение на [P]SUBSCRIBE , [P]UNSUBSCRIBE , PING и QUIT ), стана само за четене.

Redis Streams позволява на потребителите да четат съобщения в режим на блокиране или не.

Изключване на вентилатор

Pub/Sub е само за разклоняване. Всички активни клиенти получават всички съобщения.

Redis Streams позволява разклоняване (с XREAD ), но също и за предоставяне на различно подмножество от съобщения от един и същи поток на много клиенти. Това позволява мащабиране на обработката на съобщенията чрез насочване на различни съобщения към различни работници по начин, по който не е възможно едно и също съобщение да се доставя на множество потребители. Последният сценарий се постига с групи потребители .

Redis Streams предоставят много повече функции, като времеви печати, двойки поле-стойност, диапазони и т.н. Това не означава, че винаги трябва да използвате потоци. Ако вашият случай на използване може да бъде постигнат с Pub/Sub, тогава е по-добре да използвате Pub/Sub. С потоци трябва да се грижите за използването на паметта.




  1. Redis
  2.   
  3. MongoDB
  4.   
  5. Memcached
  6.   
  7. HBase
  8.   
  9. CouchDB
  1. Задайте ключ/стойност на redis с camel-redis

  2. проблем при свързването с redis, за да се комбинира с множество работнически kues

  3. Време на създаване на ключа в redis

  4. Защо SQLite е по-бърз от Redis в този прост бенчмарк?

  5. Данни за пролетната сесия Redis - Вземете валидни сесии, текущ потребител от Redis Store