ඔබේ වෙබ් ඇප් එකේ පරිශීලකයින්ගේ "ඔන්ලයින්" හෝ "ඔෆ්ලයින්" තත්ත්වය දැක්වීමේ ලාංඡනය, බොහෝ අය සරල බූලියන් තීරුවක් ලෙස හිතනවා. නමුත් එය සකස් කිරීම සරල නොව, විශාල පරිමාණයේදී ගැටලු බොහොමයක් ඇති කරයි. මේ ලිපියෙහි අපි, සාමාන්ය පෝලිං පද්ධතියෙන් ආරම්භ කර, අඩු පරිසරයක් තුළ Redis TTL (Time‑To‑Live) භාවිතයෙන් කෙසේ සාර්ථක පරිශීලක සම්බන්ධතා පද්ධතියක් නිර්මාණය කළාද යන්න පැහැදිලි කරමු.
පළමු අදහස – බූලියන් කෝලම
ඇතුල් වීමේදී is_online කෝලම true කර, පිටවීමේදී false කර දමන්න. නමුත් බොහෝ පරිශීලකයින් ඇප් එක වසා දමනවා, ලැප්ටොප් බිඳෙනවා, Wi‑Fi කැඩෙනවා – ඒ සියල්ල DB එකේ “online” ලෙස සලකුණු කරයි. ඒ නිසා තත්ත්වය තවදුරටත් නිරවද්ය නොවේ.
දෙවන උත්සාහ – ක්ලයින්ට්‑සයිඩ් හෘද ස්පන්දනය
පරිශීලකයා සෑම 30 තත්පරයකට වරක් සර්වර්ට POST /heartbeat යවනවා. සර්වර් එම තොරතුර DB එකේ last_active_at ලෙස සටහන් කරයි. පසුකාලීනව SELECT … WHERE last_active_at > NOW() - INTERVAL '1 minute' query එකෙන් online පරිශීලකයින් හඳුනාගන්න පුළුවන්. මෙය ක්රියාත්මක වුවද, එක් මිනිත්තුවකට 10,000 පරිශීලකයින් සිටිනවා නම්, DB එකට සෑම තත්පරයකට 300+ ලිවීම් එනවා – ප්රධාන DB එකේ පීඩනය වැඩිවීමේ බාධාවක්.
ප්රධාන අවධාරණය – සම්බන්ධතා තොරතුරු ස්ථිර නොවීම
පරිශීලක සම්බන්ධතා තොරතුරු කෙලින්ම “තත්කාලික” ස්ථිතියකි. සේවාදායකය නැවත ඇරඹුනොත්, හෘද ස්පන්දන නැවත එන තුරු තොරතුරු නැති වුවත් ප්රශ්නයක් නැත. එබැවින් මේ තොරතුරු ප්රධාන transactional DB එකේ නොව, මතකය පමණක් රඳා තිබෙන Redis වැනි in‑memory store එකක තබා ගත යුතුය.
Redis හි SET user:123 1 EX 30 ලෙස key එකක් 30 තත්පර TTL සමඟ සටහන් කරයි. පරිශීලකයා online නම් key එක පවතී; 30 තත්පරයක් heartbeat නොලැබේ නම් key එක ස්වයංක්රීයව ඉවත් වේ. එවිට EXISTS user:123 query එකෙන් පමණක් online/offline තත්ත්වය තීරණය කළ හැක.
ශ්රී ලංකාවට ඇති වැදගත්කම
- සිසුන් – පාඨමාලා, සජීවී කතාබස්, ප්රතිචාර පද්ධතිවල real‑time status පෙන්වීමෙන් ඉගෙනුම් අත්දැකීම වඩාත් සජීවී වේ.
- ඩිවෙලපර් – Redis TTL භාවිතය ඉගෙනගැනීමෙන්, scale‑able architecture සැලසුම් කිරීමේ හැකියාව වැඩිවෙයි. Slack, Discord වැනි විශාල පද්ධති කෙරෙහි ආකාරය තේරුම් ගත හැක.
- ව්යාපාර – කාර්ය මණ්ඩල chat, customer support, collaborative tools වල online presence නිරවද්යව පාලනය කිරීමෙන් සේවා ගුණාත්මකත්වය ඉහළ යයි, DB පීඩනය අඩු වීමෙන් operational cost අඩු වේ.
Redis තාවකාලික තොරතුරු ගබඩා කරන අතර, එය අස්ථානගත වූහොත් නව instance එකක් ස්වයංක්රීයව ආරම්භ කළ හැක. ඒ නිසා පද්ධතියේ විශ්වාසනීයතාවය වැඩිවෙයි, backup අවශ්යතාවයක් නැත.
අවසන් වශයෙන්, පරිශීලක සම්බන්ධතා පද්ධතියක් නිර්මාණය කිරීමේදී, “දත්ත ස්ථිරව තිබිය යුතුද?” යන ප්රශ්නයට පිළිතුරු දීම අත්යවශ්යයි. Redis TTL සමඟ ඔබේ ඇප් එකේ real‑time presence ක්රියාත්මක කර, Slack හා Discord වැනි ප්රමුඛ සමාජ මාධ්යවල අත්දැකීම් ඔබගේ ව්යාපාරයටත්, දේශීය තාක්ෂණ කර්මාන්තයටත් ගෙන එන්න.