Śledzenie obecności i statusu online
Zbuduj system obecności działający w czasie rzeczywistym, który śledzi, którzy użytkownicy są online, korzystając ze zbiorów Redis, TTL i heartbeatów Pub/Sub.
Śledzenie obecności i statusu online to bezpłatna lekcja Redis Caching & Messaging (Pub/Sub, Streams) na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Redis Caching & Messaging (Pub/Sub, Streams), a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Redis Caching & Messaging (Pub/Sub, Streams) zawiera 4 lekcji w sumie.
Części tej lekcji nie zostały jeszcze przetłumaczone i są wyświetlane po angielsku.
What Is Presence?
Presence is the real-time indication of whether a user is online, away, or offline. Chat apps, collaborative editors, and games all rely on it. Redis is ideal because presence data is ephemeral and high-churn.
The Naive Approach
A first idea: store a flag per user. The problem is detecting when someone disconnects ungracefully (closed laptop, lost network). A stale flag would mark them online forever.
SET presence:user:42 onlineHeartbeats with TTL
The robust pattern uses heartbeats. The client refreshes a key with a short TTL every few seconds. If heartbeats stop, the key expires and the user is considered offline.
SET presence:user:42 1 EX 15
# client re-issues this every 10 secondsListing Online Users
To list everyone online, keep a set of active users and check membership, or scan presence keys. A sorted set keyed by last-seen timestamp is efficient.
ZADD online 1716900000 user:42
ZADD online 1716900005 user:7Sorted Set by Timestamp
Storing last-seen as the score lets you both list members and prune the stale ones in one query.
ZADD online <now> user:idon each heartbeatZREMRANGEBYSCORE online -inf <cutoff>removes timed-out users
ZADD online 1716900010 user:42
ZREMRANGEBYSCORE online -inf 1716899980Broadcasting Status Changes
When a user comes online or drops off, publish an event so other clients update their UI immediately.
PUBLISH presence.events "user:42 online"
SUBSCRIBE presence.eventsDetecting Going Offline
Combine the sorted set prune with keyspace expiry. When a presence key expires, a keyevent fires, and a worker publishes a went-offline event to subscribers.
CONFIG SET notify-keyspace-events Ex
SUBSCRIBE __keyevent@0__:expiredPer-Room Presence
In a chat app you often need presence per room. Use one set per room and add or remove the user as they join or leave.
SADD room:general:online user:42
SREM room:general:online user:42
SMEMBERS room:general:onlineMulti-Device Presence
A user may be online from several devices. Count active connections so the user only goes offline when the last device disconnects.
INCR conns:user:42
DECR conns:user:42
GET conns:user:42Putting It Together
A complete presence system: heartbeat TTL keys, a last-seen sorted set, connection counters for multi-device, and Pub/Sub events to push changes to clients in real time.
Tuning the Intervals
Choose a heartbeat interval shorter than the TTL (for example heartbeat every 10s, TTL 15s) so a single missed beat does not flap a user offline. Shorter intervals mean faster detection but more traffic.
Quick Check
Test your understanding of presence design.
Recap
You built a real-time presence system using heartbeat TTL keys, a last-seen sorted set with score-based pruning, per-room presence sets, multi-device connection counters, and Pub/Sub broadcasts for instant status updates. Tune heartbeat and TTL intervals to balance detection speed against traffic.
Ucz się Redis Caching & Messaging (Pub/Sub, Streams) dzięki korepetycjom AI — za darmo
Pisz i uruchamiaj kod w przeglądarce, otrzymuj natychmiastową pomoc od korepetytora AI dostępnego 24/7 i kontynuuj naukę w sieci lub w aplikacji.
- Kursy
- 12
- Lekcje
- 48
Często zadawane pytania
Czy lekcja „Śledzenie obecności i statusu online” jest bezpłatna?
Tak — pełny tekst „Śledzenie obecności i statusu online” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Redis Caching & Messaging (Pub/Sub, Streams), przejdź na CoddyKit PRO. Kurs Redis Caching & Messaging (Pub/Sub, Streams) zawiera 4 lekcji w sumie.
Co nauczysz się w „Śledzenie obecności i statusu online”?
Zbuduj system obecności działający w czasie rzeczywistym, który śledzi, którzy użytkownicy są online, korzystając ze zbiorów Redis, TTL i heartbeatów Pub/Sub. Ćwiczysz Redis Caching & Messaging (Pub/Sub, Streams) z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Redis Caching & Messaging (Pub/Sub, Streams)?
Nie wymagamy żadnego doświadczenia. Redis Caching & Messaging (Pub/Sub, Streams) w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.
Ile czasu zajmuje lekcja „Śledzenie obecności i statusu online”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Redis Caching & Messaging (Pub/Sub, Streams)?
Tak. Każda lekcja Redis Caching & Messaging (Pub/Sub, Streams) zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Subskrypcje z dopasowaniem wzorców
- Projektowanie czatu czasu rzeczywistego
- Architektura sterowana zdarzeniami
- Śledzenie obecności i statusu online