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

Jak se Redis používá v Trello?

Redis na Trello používáme pro pomíjivá data, o která bychom klidně přišli. Data v Redis neuchováváme na disk a používáme je allkeys-lru, takže tam ukládáme pouze věci, které mohou být kdykoli vykopnuty s pouze velmi drobnými nepříjemnostmi pro uživatele (např. momentální zobrazení nesprávného stavu uživatele). Jak již bylo řečeno, dáváme mu více než 5x větší prostor, který potřebuje k uložení jeho skutečné pracovní sady, a vybíráme si z 10 klíčů pro vypršení platnosti, takže opravdu nikdy nevidíme, že by něco, co používáme, bylo vyhozeno.

  1. Je to náš pubsub server. Když uživatel něco udělá s boardem nebo kartou, chceme poslat zprávu s tímto rozdílem všem klientům připojeným k websocket, kteří jsou přihlášeni k odběru objektu, který se změnil, takže všechny naše procesy Node jsou přihlášeny k odběru kanálu pubsub, který se šíří tyto zprávy a šíří je do patřičně povolených a přihlášených webových soketů.

  2. TAKTO jej používáme k zálohování socket.io, ale protože používáme pouze websockets, a protože socket.io je příliš upovídaný na to, aby se škáloval, jak bychom ho v tuto chvíli potřebovali, máme patch, který zakáže všechny kanály kromě jednoho. je pro nás nezbytné.

  3. Pro naše uživatele, kteří nemají websockets, musíme vést seznam akcí, které se staly na každém objektovém kanálu od posledního požadavku uživatele na průzkum. K tomu používáme seznam, který omezujeme na posledních 100 prvků, a pomocné počítadlo, kolik prvků bylo přidáno do seznamu od jeho vytvoření. Když tedy odpovídáme na žádost takového prohlížeče, můžeme zkontrolovat poslední prvek, který hlásí, že viděl, a odeslat pouze zprávy, které byly od té doby přidány do fronty. Takže ve většině případů se žádost o průzkum sníží na pouze kontrolu oprávnění a kontrolu jediného klíče Redis, což je velmi rychlé.

  4. Některá pomíjivá data o aktivním stavu připojených uživatelů ukládáme v Redis, protože tato data se často mění a není nutné je uchovávat na disku.

  5. V Redis uchováváme klíče s krátkou životností pro podporu přihlášení OAuth.

Milujeme Redis; jakmile máte instanci spuštěnou a spuštěnou, chcete ji používat pro všechny druhy věcí. Jediný skutečný problém, který jsme s tím měli, je s pomalými klienty, kteří zabírají dostupný prostor.

MongoDB používáme pro naše tradičnější databázové potřeby.



  1. MongoDB:jak analyzovat datum ve verzi 3.6 mongoDb?

  2. Omezit velikost úložiště MongoDB?

  3. Jak používat jarní data mongo @CompoundIndex s dílčími kolekcemi?

  4. (MongoDB Java) $push do pole