0Pricing
Redis Caching & Messaging (Pub/Sub, Streams) · درس

تتبّع الحضور وحالة الاتصال

أنشئ نظام حضور فوريًا يتتبّع المستخدمين المتصلين باستخدام مجموعات Redis وTTLs ونبضات Pub/Sub

تتبّع الحضور وحالة الاتصال درس مجاني في Redis Caching & Messaging (Pub/Sub, Streams) على CoddyKit. هذا هو الدرس 4 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Redis Caching & Messaging (Pub/Sub, Streams)، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Redis Caching & Messaging (Pub/Sub, Streams) 4 دروس في المجموع.

بعض أجزاء هذا الدرس لم تُترجم بعد وتظهر باللغة الإنجليزية.

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.

الأسئلة الشائعة

هل درس «تتبّع الحضور وحالة الاتصال» مجاني؟

نعم — نص درس «تتبّع الحضور وحالة الاتصال» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Redis Caching & Messaging (Pub/Sub, Streams)، انتقل إلى CoddyKit PRO. تتضمن دورة Redis Caching & Messaging (Pub/Sub, Streams) 4 دروس في المجموع.

ماذا ستتعلم في «تتبّع الحضور وحالة الاتصال»؟

أنشئ نظام حضور فوريًا يتتبّع المستخدمين المتصلين باستخدام مجموعات Redis وTTLs ونبضات Pub/Sub تتمرن على Redis Caching & Messaging (Pub/Sub, Streams) مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Redis Caching & Messaging (Pub/Sub, Streams)؟

لا تُشترط خبرة سابقة. Redis Caching & Messaging (Pub/Sub, Streams) على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 4 من أصل 4.

كم من الوقت يستغرق درس «تتبّع الحضور وحالة الاتصال»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Redis Caching & Messaging (Pub/Sub, Streams) هذا؟

نعم. كل درس في Redis Caching & Messaging (Pub/Sub, Streams) يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. الاشتراكات المطابقة للأنماط
  2. تصميم دردشة فورية
  3. البنية المعمارية القائمة على الأحداث
  4. تتبّع الحضور وحالة الاتصال
← العودة إلى Redis Caching & Messaging (Pub/Sub, Streams)