0Pricing
Redis Caching & Messaging (Pub/Sub, Streams) · Leçon

Suivi de la présence et de l’état en ligne

Créez un système de présence en temps réel qui suit les utilisateurs connectés à l’aide d’ensembles Redis, de TTL et de signaux de présence Pub/Sub.

Suivi de la présence et de l’état en ligne est une leçon Redis Caching & Messaging (Pub/Sub, Streams) gratuite sur CoddyKit. Ceci est la leçon 4 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Redis Caching & Messaging (Pub/Sub, Streams), et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Redis Caching & Messaging (Pub/Sub, Streams) comprend 4 leçons au total.

Certaines parties de cette leçon n'ont pas encore été traduites et s'affichent en anglais.

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 online

Heartbeats 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 seconds

Listing 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:7

Sorted 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:id on each heartbeat
  • ZREMRANGEBYSCORE online -inf <cutoff> removes timed-out users
ZADD online 1716900010 user:42
ZREMRANGEBYSCORE online -inf 1716899980

Broadcasting 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.events

Detecting 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__:expired

Per-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:online

Multi-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:42

Putting 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.

Questions Fréquemment Posées

La leçon « Suivi de la présence et de l’état en ligne » est-elle gratuite ?

Oui — le texte complet de « Suivi de la présence et de l’état en ligne » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Redis Caching & Messaging (Pub/Sub, Streams), passe à CoddyKit PRO. Le cours Redis Caching & Messaging (Pub/Sub, Streams) comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Suivi de la présence et de l’état en ligne » ?

Créez un système de présence en temps réel qui suit les utilisateurs connectés à l’aide d’ensembles Redis, de TTL et de signaux de présence Pub/Sub. Tu pratiques Redis Caching & Messaging (Pub/Sub, Streams) avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer Redis Caching & Messaging (Pub/Sub, Streams) ?

Aucune expérience préalable n'est requise. Redis Caching & Messaging (Pub/Sub, Streams) sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 4 sur 4.

Combien de temps prend la leçon « Suivi de la présence et de l’état en ligne » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon Redis Caching & Messaging (Pub/Sub, Streams) ?

Oui. Chaque leçon Redis Caching & Messaging (Pub/Sub, Streams) inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Abonnements avec correspondance de motifs
  2. Conception d’une discussion en temps réel
  3. Architecture orientée événements
  4. Suivi de la présence et de l’état en ligne
← Retour à Redis Caching & Messaging (Pub/Sub, Streams)