2013-05-16 11 views
6

W mojej aplikacji dynamicznie tworzę nowe kanały pubsub i może ich być za dużo jak 5k dziennie. Zgodnie z wymaganiami mojej aplikacji każdy kanał jest używany przez maksymalnie 5 minut.Redis: jak (lub powinienem) usunąć kanały pubsub

Uwzględniając tę ​​sytuację, tysiące nieużywanych kanałów będą obecne w aplikacji w ciągu tygodnia. Jak mogę usunąć nieużywane kanały lub je usunąć. Czy przechowują się w pamięci? Co dzieje się z wiadomościami publikowanymi za ich pośrednictwem, czy pozostają w pamięci redis?

dzięki

+0

Po "5 minutach" aplikacja wysyła polecenie "UNSUBSCRIBE"? – byterussian

+0

moi klienci są klientami WWW przez socket.io, więc użytkownik końcowy może nagle zamknąć kartę przeglądarki i może nie wiem, czy nadal jest podłączony czy nie. Być może poradziłbym sobie z tym przez złapanie timeoutów socket.io lub coś innego, ale najważniejsze jest to, że zagwarantowanie, że 'UNSUBSCRIBE'ing wszystkich subskrybentów spowoduje usunięcie kanału? – destan

+0

Nie jestem pewien, spróbuj. Pamiętam, że jeśli kanał ma zero subskrybentów, zostanie usunięty. W przypadku problemu z komunikatem, po wysłaniu wiadomości i odebraniu, już nie istnieje. – byterussian

Odpowiedz

10

Kanały są ambientem. Istnieją one tylko wtedy, gdy są subskrypcje. A więc: zadzwoń [P] UNSUBSCRIBE z połączeń, które subskrybują, lub zamknij połączenia, które subskrybują.

+0

dzięki za odpowiedź, czy możesz podać dowolne źródło, aby to zaznaczyć? Nie mogłem znaleźć takich szczegółów w dokumentach. – destan

+1

@Destan można zmierzyć "statystyki informacji" przed i po (co opisuje liczbę subskrypcji) - wystarczająco blisko? Czy możesz przeczytać źródło? Ale w zasadzie wiem "rozmawiając z autorami" - obawiam się, że jestem technikiem –

Powiązane problemy