Junior — Middle
Ինչպես է իրականացվում օգտվողների սեսիաների պահպանումը ձեր վերջին նախագծում?
sobes.tech AI
Պատասխան AI-ից
Իմ վերջին նախագծում օգտագործողի սեսիաների պահպանումը իրականացվել է կիրառական սերվերի և Redis- ի միջոցով որպես արտաքին պահեստ:
Աշխատանքի մեխանիզմը՝
- Օգտագործողի հաստատումից հետո ստեղծվում է յուրահատուկ սեսիայի նույնականացուցիչ (sessionId):
- Սեսիայի տվյալները (օրինակ՝ օգտվողի ID, վերջին ակտիվության ժամանակը) serialացվում և պահվում են Redis- ում sessionId բանալիով:
- Վեբ հավելվածը յուրաքանչյուր հարցում ստանում է sessionId- ն cookie- ից և դուրս է բերում սեսիայի տվյալները Redis- ից:
- Սեսիայի կյանքի տևողությունը կառավարելու համար Redis- ում օգտագործվում է TTL (time-to-live), ինչը թույլ է տալիս ավտոմատ կերպով հեռացնել անգործունեության սեսիաները:
Այս մոտեցումը ապահովում է ընդլայնելիություն (մի քանի կիրառական սերվերներ կարող են մուտք ունենալ նույն սեսիայի պահեստը) և արագ աշխատանք՝ հիշողության մեջ պահեստավորման շնորհիվ:
Կոդի օրինակ՝ Redis- ում սեսիա պահելու համար (օգտագործելով Jedis).:
Jedis jedis = new Jedis("localhost");
String sessionId = UUID.randomUUID().toString();
Map<String, String> sessionData = new HashMap<>();
sessionData.put("userId", "12345");
// Սեսիայի պահպանում TTL 30 րոպեով
jedis.hmset(sessionId, sessionData);
jedis.expire(sessionId, 1800);