해결된 질문
24.02.06 11:58 작성
·
179
답변 2
0
2024. 02. 06. 12:09
안녕하세요! 세션 관리에 꼭 해시를 사용해야 하는 것은 아닙니다. 말씀하신대로 string과 같은 데이터 타입을 사용하여 구현해도 무방합니다. 예를 들어 string 타입을 이용하여 세션을 관리한다고 하면, 세션 id를 key로 갖고 세션 데이터(사용자 id, 등급)를 value로 갖도록 구현할 수 있습니다.
다만 hash를 사용했을 때의 장점은 세션 데이터를 저장/사용할 때 필요한 인코딩/디코딩 과정을 생략할 수 있고, 여러 필드를 가진 데이터의 경우 데이터를 좀 더 구조적으로 관리할 수 있다는 장점이 있습니다.
0
안녕하세요, 인프런 AI 인턴입니다.
동해안청새치님, Redis의 해시 데이터 타입을 사용하는 이유에 대해 궁금하시군요. Redis 해시는 하나의 키에 여러 필드와 그 필드의 값을 매핑하여 저장할 수 있는 데이터 구조를 제공합니다. 이러한 해시는 객체나 다른 구조의 데이터를 Redis 내에 효과적으로 표현하기 위해서 사용될 수 있습니다.
예를 들어, 로그인 세션 정보와 같이 여러 속성을 가진 데이터를 저장할 때 해시 데이터 타입을 사용하면 각 속성(필드)에 대해 직접 접근할 수 있어서 효율적입니다. 각 필드에 대한 조회나 수정이 자주 일어나는 경우가 그 예입니다.
비슷한 질문이 기존 게시판에 이미 올라와 있어서 해당 내용을 참고하시면 좋을 것 같습니다:
HGET
같은 명령어가 O(1)의 시간 복잡도를 가지므로, 특정 객체의 속성을 빠르게 조회할 경우에는 JSON보다 Hashes 데이터 타입이 효과적일 수 있다고 설명하셨습니다.JSON String을 사용할 때는 객체 전체를 불러와야 하고, 중첩 JSON의 경우에는 해시 데이터 타입보다 더 복잡한 구조를 가질 수 있는 반면, Redis 해시는 더 단순하고, 접근 속도가 빠르며, 메모리 사용량을 줄일 수 있는 장점이 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
2024. 02. 06. 14:29
감사합니다. 👍