पाठ 14 / 18

सेशन स्टोरेज

कई ऐप सर्वर में लॉगिन सेशन साझा करें।

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

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

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

एक 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"

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

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

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