SkillByAIइंटरैक्टिव संस्करण खोलें →

पाठ 15 / 20

सेशन स्टोरेज

Redis hashes और timeouts के लिए TTLs के साथ application servers के बीच login sessions साझा करें।

ऐप मेमोरी में क्यों नहीं?

अगर सेशन किसी एक सर्वर की मेमोरी में हों, तो लोड बैलेंसर द्वारा किसी दूसरे इंस्टेंस पर भेजे जाने पर यूज़र लॉगआउट हो जाता है। रेडिस हर सर्वर को एक साझा सेशन स्टोर देता है।

सेशन स्टोर करना

एक hash सेशन के फ़ील्ड रखता है, और सेशन टाइमआउट से मेल खाता TTL निष्क्रियता से लॉगआउट होने पर उसे अपने-आप समाप्त कर देता है।

HSET session:xyz789 user_id "42" role "admin"
EXPIRE session:xyz789 1800
HGETALL session:xyz789

Output:

(integer) 2
(integer) 1
1) "user_id"
2) "42"
3) "role"
4) "admin"

त्वरित जाँच: मल्टी-सर्वर ऐप में सेशन के लिए रेडिस अच्छा फ़िट क्यों है?

  • यह सेशन को स्थायी रूप से डिस्क पर रखता है
  • हर ऐप सर्वर एक ही साझा, तेज़ सेशन स्टोर पढ़ सकता है
  • यह अपने-आप हर यूज़र को लॉगआउट कर देता है
  • यह sessions को धीमा करता है
Answer

हर ऐप सर्वर एक ही साझा, तेज़ सेशन स्टोर पढ़ सकता है — एक साझा, कम-देरी वाला स्टोर मतलब कोई भी सर्वर बिना stickiness के किसी भी यूज़र का सेशन दे सकता है।