Sobes.tech
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);