Redis 세트 대 해시
많은 Redis 자습서 (예 : 이 자습서 )에서 데이터는 집합에 저장되지만 여러 값이 문자열로 결합되어 있습니다 (예 : 사용자 계정은 "user : 1000 : username"및 "user : 1000 : username"과 같은 두 항목으로 집합에 저장 될 수 있음). "user : 1000 : password").
그러나 Redis에는 해시도 있습니다. "username"항목과 "password"항목을 포함하는 "user : 1000"해시를 갖는 것이 더 합리적 일 것 같습니다. 특정 값에 액세스하기 위해 문자열을 연결하는 대신 해시에서 직접 액세스하면됩니다.
그렇다면 왜 그렇게 많이 사용되지 않습니까? 이것은 단지 오래된 튜토리얼입니까? 아니면 Redis 해시에 성능 문제가 있습니까?
Redis 해시는 질문에서 제안한 것처럼 더 복잡한 데이터를 저장하는 데 좋습니다. 캐싱해야하는 여러 속성 (특히 전자 상거래 사이트의 특정 제품에 대한 재고 데이터)을 가진 개체를 저장하기 위해 정확히이를 사용합니다. 물론 연결된 문자열을 사용할 수는 있지만 클라이언트 코드에 불필요한 복잡성이 추가되고 개별 필드를 업데이트 할 수 없습니다.
당신이 맞을 수 있습니다-튜토리얼은 단순히 해시가 소개되기 전의 것일 수 있습니다. 객체 표현을 저장하기 위해 명확하게 설계되었습니다 : http://oldblog.antirez.com/post/redis-weekly-update-1.html
한 가지 관심사는 간단한 String SET 명령과 비교할 때 새 항목이 삽입 될 때 Redis가 서비스해야하는 명령의 수입니다 (n 개의 명령, 여기서 n은 해시의 필드 수). 하루에 약 100 만 번 Redis를 공격하는 서비스에서 아직 이것이 문제가되지는 않았습니다. 나에게 적절한 데이터 구조를 사용하는 것이 성능에 미치는 영향을 무시하는 것보다 더 중요합니다.
(또한 Redis Sets 대 Redis Strings에 대한 내 의견을 참조하십시오-귀하의 질문은 Strings를 언급하고 있다고 생각하지만 내가 틀렸다면 수정하십시오!)
해시는 Redis에 데이터를 저장하는 가장 효율적인 방법 중 하나이며, 가능할 때마다 사용할 수 있도록 권장하는 것까지도 포함합니다.
http://redis.io/topics/memory-optimization
가능한 경우 해시 사용
작은 해시는 매우 작은 공간에서 인코딩되므로 가능할 때마다 해시를 사용하여 데이터를 표현해야합니다. 예를 들어 웹 애플리케이션에서 사용자를 나타내는 객체가있는 경우 이름, 성, 이메일, 비밀번호에 대해 다른 키를 사용하는 대신 모든 필수 필드에 단일 해시를 사용합니다.
사용 사례 비교 :
세트는 데이터를 Redis 서버에 세트로 저장하기위한 시맨틱 인터페이스를 제공합니다. 이러한 종류의 데이터에 대한 사용 사례는 분석 목적 (예 : 제품 페이지를 탐색하는 사람 수 및 제품 구매를 끝낸 사람 수)을위한 것입니다.
해시는 Redis 서버에 단순하고 복잡한 데이터 개체를 저장하기위한 의미 체계 인터페이스를 제공합니다. 예를 들어, 사용자 프로필, 제품 카탈로그 등이 있습니다.
참고 : Redis 학습
참고 URL : https://stackoverflow.com/questions/13557075/redis-set-vs-hash
'Programing' 카테고리의 다른 글
mongodb에 json 파일 삽입 (0) | 2020.11.13 |
---|---|
PHP에서 이미지 출력 (0) | 2020.11.13 |
IEnumerable은 왜 (0) | 2020.11.12 |
과학 데이터 저장에 대한 NetCDF 대 HDF5에 대한 의견? (0) | 2020.11.12 |
후기 입 및 연속 기입 캐싱? (0) | 2020.11.12 |