반응형
셋데이터 인코딩에 대해서 생각정리를 해볼께요..^^
- Set 데이터의 시간 복잡도
- O(1)
- 해당 시간 복잡도를 제공하기위해서 내부적으로 Hash 테이블 구조로 구현되어 있다고 함.
- O(1)
- Set 데이터의 인코딩
- OBJ_ENCODING_HT
- 기본 인코딩.
- OBJ_ENCODING_INTSET
- 메모리를 절약하기 위한 특별한 인코딩.
- 환경설정(redis.conf)
- set-max-intset-entries 설정에서 지정됨.
- 숫자 데이터로 한정됨.
- OBJ_ENCODING_HT
- 초기 설정 인코딩인 OBJ_ENCODING_INTSET이 OBJ_ENCODING_HT 으로 변경되면 다시 OBJ_ENCODING_INTSET으로 변경되지 않음.
- 즉, 숫자 데이터가 아니면 항상 OBJ_ENCODING_HT 인코딩으로 변환됨.
Set 데이터의 인코딩 변화 확인 예시
-
- 위의 테스트 예제 결과와 같이,
- 초기 설정 인코딩인 OBJ_ENCODING_INTSET이 OBJ_ENCODING_HT 으로 변경되면 다시 OBJ_ENCODING_INTSET으로 변경되지 않음을 확인할 수 있음.
- 위의 테스트 예제 결과와 같이,
Set 데이터의 인코딩을 처리하는 Redis 함수
- t_set.c 파일에 정의된 saddCommand 함수에서 처리됨.
- 소스
Set 에 데이터를 추가 하는 함수
- 소스
- 위의 소스를 보면,
- OBJ_ENCODING_INTSET이 OBJ_ENCODING_HT 으로 변경되는 조건 및 로직을 볼 수 있음.
결론
- Set 데이터 인코딩은 아래 2가지 인코딩으로 구성되어 있음.
- OBJ_ENCODING_HT
- OBJ_ENCODING_INTSET
- 숫자 데이터가 아니면 항상 OBJ_ENCODING_HT 인코딩으로 변환됨.
- Set 데이터 인코딩이 OBJ_ENCODING_INTSET에서 OBJ_ENCODING_HT로 변경되면, 다시는 OBJ_ENCODING_INTSET 으로 변경되지 않음.
- 오늘도 Redis 에 대한 마술(?) 한가지 획득 완료! ^^;
- 오늘의 명언 한마디
- 고수는 정부 정책의 전환으로 인한 시장의 변화 가능성을 항상 염두에 두며, 한 번에 많은 돈을 별러고 욕심내기보다는 리스크를 관리하면서 꾸준히 투자하는 것이 더 큰 수익이 된다는 사실을 경험으로 알게 된 사람들이다. -신형강(부룡), "부동산 투자 이렇게 쉬었어?" 중에서...
- 오늘의 영어 한마디
- 질문) Even you should be able to handle this.
- 이건, 너라도 할 수 있을 거야.
- 대답) Hey, what do you mean by that?
- 뭐야, 그거 무슨 뜻으로 하는 소리야!
- 해설
- "What do you mean by that?" 은 그거 대체 무슨 뜻이야? 라는 힐문조의 표현
- 비슷한 표현인 "도대체 날 뭐로보고 그런 소릴하는 거야?"
- Watch who you say that to!
- 이때, watch 는 "주의해라" 라는 의미임.
- Watch who you say that to!
- 질문) Even you should be able to handle this.
728x90
300x250
'좋아하는 것_매직IT > 9.redis' 카테고리의 다른 글
23.Redis, 레디스 공유객체에 대해서 알아볼께요. (0) | 2021.01.15 |
---|---|
22.Redis, 레디스문자열 구현에 대해서 알아볼께요. (0) | 2021.01.14 |
20.Redis, 레디스 인코딩 중 리스트 데이터 인코딩 에 대해서 알아볼께요.^^ (0) | 2021.01.14 |
19.Redis, 레디스 인코딩 중 문자열 데이터 인코딩 에 대해서 알아볼께요.^^ (0) | 2021.01.14 |
18.Redis, 레디스 객체(Redis Object)에 대해서 알아볼까요? (0) | 2021.01.14 |