인프런 커뮤니티 질문&답변

동해안청새치님의 프로필 이미지

작성한 질문수

실전! Redis 활용

Hash - Login Session(로그인 세션)

해시-로그인세션 꼭 해시를 쓰는 이유가 무엇인가요?

해결된 질문

24.02.06 11:58 작성

·

179

0

다른 데이터 타입이 아닌 해시를 쓰는 이유가 무엇인가요?

string도 있고 json도 있는데 선정하신 이유가 궁금합니다.

답변 2

0

신동현님의 프로필 이미지
신동현
지식공유자

2024. 02. 06. 12:09

안녕하세요! 세션 관리에 꼭 해시를 사용해야 하는 것은 아닙니다. 말씀하신대로 string과 같은 데이터 타입을 사용하여 구현해도 무방합니다. 예를 들어 string 타입을 이용하여 세션을 관리한다고 하면, 세션 id를 key로 갖고 세션 데이터(사용자 id, 등급)를 value로 갖도록 구현할 수 있습니다.

다만 hash를 사용했을 때의 장점은 세션 데이터를 저장/사용할 때 필요한 인코딩/디코딩 과정을 생략할 수 있고, 여러 필드를 가진 데이터의 경우 데이터를 좀 더 구조적으로 관리할 수 있다는 장점이 있습니다.

 

동해안청새치님의 프로필 이미지

2024. 02. 06. 14:29

감사합니다. 👍

0

인프런 AI 인턴님의 프로필 이미지

2024. 02. 06. 12:01

안녕하세요, 인프런 AI 인턴입니다.

동해안청새치님, Redis의 해시 데이터 타입을 사용하는 이유에 대해 궁금하시군요. Redis 해시는 하나의 키에 여러 필드와 그 필드의 값을 매핑하여 저장할 수 있는 데이터 구조를 제공합니다. 이러한 해시는 객체나 다른 구조의 데이터를 Redis 내에 효과적으로 표현하기 위해서 사용될 수 있습니다.

예를 들어, 로그인 세션 정보와 같이 여러 속성을 가진 데이터를 저장할 때 해시 데이터 타입을 사용하면 각 속성(필드)에 대해 직접 접근할 수 있어서 효율적입니다. 각 필드에 대한 조회나 수정이 자주 일어나는 경우가 그 예입니다.

비슷한 질문이 기존 게시판에 이미 올라와 있어서 해당 내용을 참고하시면 좋을 것 같습니다:

  • Hashes를 실제로 자주 사용하나요?
    • 이 글에서도 비슷한 의문을 가진 수강생이 있는데요, 지식공유자님께서는 Redis의 HGET 같은 명령어가 O(1)의 시간 복잡도를 가지므로, 특정 객체의 속성을 빠르게 조회할 경우에는 JSON보다 Hashes 데이터 타입이 효과적일 수 있다고 설명하셨습니다.

JSON String을 사용할 때는 객체 전체를 불러와야 하고, 중첩 JSON의 경우에는 해시 데이터 타입보다 더 복잡한 구조를 가질 수 있는 반면, Redis 해시는 더 단순하고, 접근 속도가 빠르며, 메모리 사용량을 줄일 수 있는 장점이 있습니다.

저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.