2011-12-20 15 views

Odpowiedz

24

Używamy Redis na Trello dla efemerycznej danych, które chcemy być w porządku z utratą. Nie przechowujemy danych w Redis na dysku, a używamy go pod nazwą allkeys-lru, więc przechowujemy tylko te rzeczy, które mogą zostać wyrzucone w dowolnym czasie, przy bardzo niewielkich niedogodnościach dla użytkowników (np. Chwilowo widzących nieprawidłowy stan użytkownika). Biorąc to pod uwagę, dajemy mu ponad 5-krotną przestrzeń potrzebną do przechowywania jego rzeczywistego zestawu roboczego i wybrania spośród 10 kluczy do wygaśnięcia, więc naprawdę nigdy nie widzimy niczego, co zostanie wyrzucone, czego używamy.

  1. To nasz serwer pubsub. Kiedy użytkownik robi coś na tablicy lub karcie, chcemy wysłać wiadomość z tą deltą do wszystkich klientów połączonych z internetem, którzy subskrybują zmieniony obiekt, więc wszystkie nasze procesy węzłowe są subskrybowane do kanału pubsub, który propaguje wiadomości i rozpowszechniają je do odpowiednio zaaprobowanych i subskrybowanych stron internetowych.

  2. My SORTUJmy użyć go do powrotu socket.io, ale ponieważ używamy tylko websockets, a ponieważ socket.io to too chatty na skalę, jakiej potrzebujemy, w tej chwili mamy łatkę, która wyłącza wszystkie oprócz jeden kanał, który jest nam potrzebny.

  3. Dla naszych użytkowników, którzy nie mają portali internetowych, musimy zachować listę działań, które miały miejsce na każdym kanale obiektu od ostatniego żądania użytkownika. Do tego używamy listy, którą zamykamy na ostatnich 100 elementach, oraz pomocniczego licznika, ile elementów zostało dodanych do listy od momentu jej utworzenia. Tak więc, gdy odpowiadamy na prośbę o ankietę z takiej przeglądarki, możemy sprawdzić ostatni element, który widzi, i zobaczyć tylko te wiadomości, które zostały dodane do tej kolejki od tego czasu. Tak więc w większości przypadków otrzymujemy żądanie ankiety tylko do sprawdzenia uprawnień i pojedynczego sprawdzenia klucza Redis, co jest bardzo szybkie.

  4. Przechowujemy niektóre efemeryczne dane o aktywnym stanie podłączonych użytkowników w Redis, ponieważ dane te często się zmieniają i nie ma potrzeby utrzymywania ich na dysku.

  5. Przechowujemy klucze krótkotrwałe w celu obsługi logowania OAuth w Redis.

Uwielbiamy Redis; kiedy już masz instancję, którą chcesz uruchomić, chcesz użyć go do różnych rzeczy. Jedyny problem, jaki mieliśmy z tym problemem, to: slow-consuming clients eating up the available space.

Używamy MongoDB do naszych bardziej tradycyjnych potrzeb baz danych.

+0

Wielkie dzięki za ten Brett. Aha, i gratuluję budowy tak niesamowitej aplikacji :) – William

+0

https://trello.com/brett –

+0

@Brett, czy używasz redis do danych sesji użytkownika i kontroli uprawnień? Dzięki! – paulkon