핵심 데이터웹 및 모바일

세션 관리

세션을 자동 만료와 함께 저장하고, 인덱스를 구축하지 않고도 사용자, 역할, 기기별로 찾거나 취소합니다.

사용자 세션을 찾는 조회 횟수
1
보조 인덱스
0
만료, 태그 포함
자동
단계 1 / 5
세 기기에서 로그인

각 기기는 30분 만료가 있는 자체 세션을 받습니다.

예시 세션playing
# 세 기기에서 로그인
hotkv> SET session:9f2c "{\"user\":42}" EX 1800
OK

실제 HotKV 명령과 예시 응답으로 구성된 애니메이션 안내입니다. 원하는 단계를 클릭하면 해당 단계로 이동합니다. 명령과 응답은 HotKV에서 입력하고 보는 그대로 영어로 표시됩니다.

문제

세션은 작고, 자주 쓰이며, 수명이 짧아 인메모리 저장소에 잘 맞습니다. 어려운 부분은 나중에 옵니다. 지원팀이 사용자를 모든 곳에서 로그아웃시켜야 하거나, 보안팀이 특정 역할이나 기기의 모든 세션을 끝내야 할 때입니다. 일반 키-값 저장소는 세션을 ID로만 조회할 수 있습니다.

HotKV의 해결 방식

HotKV는 각 세션을 만료가 있는 키로 저장하고, 세션이 속한 사용자, 역할, 기기로 태그를 붙일 수 있게 합니다. 태그는 엔진의 일부이며 키와 함께 사라지므로, 별도의 키 집합을 유지하는 대신 조회 한 번으로 일치하는 모든 세션을 나열하거나 취소할 수 있습니다.

단계별 설명

명령 하나하나, 무슨 일이 일어나는가

  1. 01

    세 기기에서 로그인

    각 기기는 30분 만료가 있는 자체 세션을 받습니다.

    SET session:9f2c "{\"user\":42}" EX 1800
  2. 02

    각 세션에 태그

    세션을 만든 직후 사용자, 역할, 기기를 붙입니다.

    TAG.SET session:9f2c user:42 role:admin device:ios
  3. 03

    활동하는 동안 로그인 유지

    요청마다 만료가 갱신되므로 슬라이딩 타임아웃이 됩니다.

    EXPIRE session:9f2c 1800
  4. 04

    사용자 42의 모든 세션 찾기

    노트북 도난 신고가 들어옵니다. 조회 한 번으로 사용자의 모든 세션이 반환됩니다.

    TAG.MEMBERS user:42
  5. 05

    모든 곳에서 로그아웃

    반환된 키를 삭제합니다. 태그도 함께 사라지고 모든 기기가 로그아웃됩니다.

    DEL session:9f2c session:71aa session:0c8e
적용 분야

실제 시나리오

뱅킹과 핀테크 앱

보안팀은 침해된 계정의 모든 세션, 또는 구버전 앱을 쓰는 모든 기기의 세션을 한 번의 작업으로 끝냅니다.

SaaS 제품

관리자의 역할이 제거되면 그 역할로 태그된 모든 세션이 한 번에 취소됩니다.

스트리밍 서비스

사용자 태그에 대한 TAG.MEMBERS 응답으로 계정당 동시 세션을 세고 제한합니다.

내장 기능

제공되는 기능

자동 만료

TTL이 다하면 세션은 스스로 사라지고, 태그도 함께 사라집니다.

EXEXPIRE

인덱스 없는 조회

어떤 태그로든, 또는 여러 태그를 동시에 사용해 세션을 찾습니다.

TAG.MEMBERSTAG.INTER

빠른 태그 확인

TAG.COUNT와 TAG.EXISTS로 키에 붙은 태그를 확인합니다.

TAG.COUNTTAG.EXISTS

로그인 폭주에도 빠름

세션 읽기와 쓰기가 병렬 스레드에서 실행됩니다.

자주 묻는 질문

사용자를 한 기기에서만 로그아웃시키려면 어떻게 합니까?

사용자 태그와 기기 태그로 TAG.INTER를 실행한 뒤 반환된 키를 삭제합니다.

세션이 만료되면 태그는 어떻게 됩니까?

키의 태그는 만료를 포함해 키가 사라질 때 함께 사라집니다. 태그는 스냅샷에 포함되지 않으므로, 서버가 스냅샷에서 재시작하면 다시 적용하십시오.

계정당 동시 세션을 제한할 수 있습니까?

예. 사용자 태그에 TAG.MEMBERS를 실행하면 세션이 나열되므로, 로그인 시 세션 수를 세어 거부하거나 가장 오래된 세션을 끝낼 수 있습니다.

관련 사용 사례

직접 워크로드로 사용해 보십시오

HotKV는 Redis 프로토콜을 사용하므로 기존 클라이언트를 연결해 같은 명령을 그대로 실행할 수 있습니다.