본문 바로가기

좋아하는 것_매직IT/9.redis

18.Redis, 레디스 객체(Redis Object)에 대해서 알아볼까요?

반응형

레디스 객체(Redis Object)에 대해서...

  • Redis 는 저장된 데이터를 관리하기 위하여 redisObject 객체를 사용함.
  • 문자열데이터와 Hash 데이터는 모두 redisObject 객체를 사용하여 저장함.
    • redisObject 가 관리하는 정보
      • 저장된 객체의 데이터형과 인코딩 정보
      • 객체가 참조된 횟수
      • LRU(Least Recently Used) 시간 정보
  • 레디스객체는 레디스의 거든 모든 소스코드에서 사용됨.
    • 저장된 모든 데이터와 Key 의 표현에 사용됨.
  • 레디스에서 가장 기본적인 데이터 표현 방식이고, 레디스의 내부구조를 이해하기 위해서 가장 중요한 객체이기도함.
  • redisOjbect 구조체(Redis-5.0.5 기준)

  • 콜론(:) 기호 란?
    • 위의 소스에서 콜론 기호는 C 언어의 구조체에서 사용하는 비트 필드 표기 방식으로서 할당된 데이터형을 콜론 기호 뒤의 숫자에 해당하는 길이만큼 사용하는 것
    • 비트 필드는 주어진 크기의 데이터를 비트 단위로 잘라서 사용할 수 있기 때문에 제한된 공간에 여러가지 정보를 저장할 수 있는 장점이 있음.
  • 여기서는 32bit 크기의 변수를 각각 4,4,24 bit 만큼 할당하여 3개의 변수로 사용함.
    • 4+4+24 = 32bit
  • 변수 refcount 와 *ptr은 운영체제에서 사용하는 포인터의 크기로 저장됨.
  • 즉, 결론적으로 32bit 체계에서 redisObject 크기는 96bit(12byte)로 볼 수 있음.
    • 여기서 잠깐! C언어 포인터 표현방식(*)에 대해서 알아볼께요..^^;
      • 운영체제의 bit 에 따라서 아래와 같이 크기가 달라짐.
        • 32bit 
          • 4byte
        • 64bit
          • 8byte 
        • 즉 64bit 운영체제에서는 32bit 운영체제에 비해서 주소를 표시하기 위해서 더 많은 메모리가 필요해짐.
  • redisObjet 필드 소개
    • type 
      • redis 에 저장된 객체의 데이터형을 나타냄.
        • server.h 헤더파일 참조

  • encoding
    • redis 객체에 저장된 데이터의 인코딩 타입을 나타냄.
    • server.h 헤더파일 참조

  • lru
    • 저장된 데이터의 LRU 시간 정보를 나타냄.
    • refcount 
      • 객체가 참조된 횟수 정보를 나타냄.
    • *ptr
      • 실제 데이터가 저장된 위치 정보를 가리키는 포인터임. 즉 데이터가 저장된 메모리의 주소.
    • 데이터 저장 & 디버그 명령 실행 예시
    • debug object  명령
      • 지정된 key 의 상세 정보를 출력 함.
        • redisObject 에 저장된 인코딩 정보
        • 객체 참조횟수
        • lru 시간에 대한 정보

결론

  • Redis 에는 저장된 데이터를 관리하기 위하여 redisObject 객체를 사용함
  • redisObject 객체의 정보를 보기위해서는 아래 명령을 사용하면 됨.
    • debug object [key]
  • 레디스를 사용자의 관점으로서 사용하기만 했었는데, 직접 돋보기(?) 들고 소스를 분석해보니 더욱 재미있는 오픈소스인듯..^^;
    • 오늘도 Redis 마술(?) 하나 습득완료..^^;

  • 금일의 명언 한마디
    • 부동산 정책은 규제와 완하가 반복된다. 추후 완화 시점이 도래하면 싸게 구입한 만큼 가격 상승분을 고스란히 수익으로 챙길 수 있으므로 매우 유용한 투자 방법이다. - 신형강(부룡)지음, "부동산투자이렇게쉬웠어?" 중에서...

  • 금일의 영어 한마디
    • 질문) Jimmy is due back any minute.
      • 지미가 돌아올 때가 되었는데..
    • 응답) Don't worry, I'm sure everything's OK.
      • 걱정할 거 없어요, 설마 별 일 있을라고..
    • 해설
      • due back(=supposed to come back) 은 "이젠 돌아올 때라고 생각한다"
        • supposed를 사용하면 보다 간절한 심정이 담긴 표현이 됨.
      • due는 "예정된 시기"를 나타냄.

 

728x90
300x250