sql >> Databáze >  >> NoSQL >> Redis

Předplatitelé a vydavatelé Redis pub sub max

Redis používá dict , stejná struktura jako u klíčů, k ukládání odběrů kanálů, a to jak pro klienta, tak pro všechny klienty (uchovává hash pro jednotlivé odběry se seznamem přihlášených klientů), takže celkem jde až o 2^32 odběrů kanálu.

Používá seznam k ukládání odběrů vzorů na klienta, takže je teoreticky omezen pouze dostupnou pamětí uzlu.

Obecně však můžete mít nekonečný počet kanálů. Při publikování zprávy si kanál představte jako štítek. Zprávy se nikdy neukládají. Když je zpráva publikována, Redis vyhledá klienty přihlášené k odběru tohoto kanálu a otestuje každý odběr vzoru. Kanál skutečně existuje pouze v době, kdy je zpráva publikována.

Protože existují předplatné vzorů, existuje neomezený počet „logických“ kanálů.

Jen v upozorněních na události máme 2^32 * databáze * klíčové typy událostí možné 'logické' kanály.

Počet odběratelů a vydavatelů je omezen maxclients nastavení, ve výchozím nastavení 10 000. Neexistuje žádné omezení pro předplatitele a vydavatele, ale platí maximální limit klientů (připojení).

Jak uvedl @Roman, existují omezení vyrovnávací paměti, ale to se týká především propustnosti (zpracování zpráv).



  1. Jak na to:Zahrňte do své úlohy MapReduce knihovny třetích stran

  2. Tipy pro spuštění MongoDB v produkci pomocí změnových streamů

  3. ServiceStack:Obnovit kanál při ručním vyvolání služby?

  4. Streamujte z mongodb kurzoru do expresní odpovědi v node.js