redis 중 RDB 구조 알 아 보기동력 노드 자바 대학 정리
1.RDB 구조 분석
우선,우 리 는 RDB 파일 에 대해 개념 적 인 인식 을 가 져 야 한다.예 를 들 어 아래 에 그 려 진 그림 과 같다.
그림 에서 우 리 는 RDB 파일 의 간단 한 저장 모드 를 대충 보 았 지만 더욱 편리 하 게 대조 하기 위해 저 는 save empty database 를 준비 하여 효 과 를 비교 해 보 려 고 합 니 다.
그리고 우 리 는 winHex 로 dump.rdb 파일 을 열 어 16 진법 을 봅 니 다.
자,열 어야 할 것 은 내 가 다 열 었 으 니 다음은 우리 가 비교 해 보 자.
1.Redis 매개 변수:16 진수 앞의 5 개의 바이트 에서 볼 수 있 듯 이'REDIS'5 개의 큰 자모 입 니 다.이 역할 은 분명 합 니 다.현재 파일 이'RDB 파일'인지 아 닌 지 를 판단 하 는 것 입 니 다.그래 야 상수 의 시간 으로 판별 할 수 있 습 니 다.
2. db_version:Redis 문자 이후 4 바이트 의 0006 을 보 았 습 니 다.이것 이 바로 RDB 파일 구성 도 중의 db 입 니 다.version。그 렇 죠?마찬가지 로 간단 합 니 다.바로 현재 Redis 의 버 전 번 호 를 판단 하 는 것 입 니 다.그 렇 죠??
3.database:제 가 보 여 준 것 은 empty database 이기 때문에 해당 하 는 구조 가 없습니다.다음 에 기록 을 삽입 하고 다시 비교 해 보 겠 습 니 다.
4.EOF:winHex 에서 한 바이트 의 공간 을 차지 하 는 것 을 보 았 습 니까?바로'y'위 에 두 가 지 를 추가 한 것 입 니 다.유 니 코드 로 표시 할 수 없 기 때문에 이런 어 지 러 운 코드 가 생 겼 습 니 다.물론 16 진법 으로 표시 할 수 있 습 니 다.이른바'FF'입 니 다.보 셨 습 니까?그러면 그 역할 은 바로 표지 database 의 끝 이다.
5.checksum:이름 에서 보 실 수 있 습 니 다.이것 은 바로 하나의 검증 입 니 다.원 리 는 당연히 파일 이 손상 되 었 는 지,또는 수정 되 었 는 지 를 보 는 것 입 니 다.이렇게 하면 현재 OAuth 검증 과 같 습 니 다.그 렇 죠?8 개의 바이트,즉 마지막:DC B3 43 F0 5A DC F2 56 을 차지 합 니 다.
2.데이터 가 있 는 RDB 파일 구조 데모
자,위 에서 Database 를 제외 한 모든 인 자 를 보 여 주 었 습 니 다.다음은 가장 간단 한 string 형식 을 설정 하여 database 구조 가 그림 과 같 는 지 확인 하 겠 습 니 다.
WinHex 로 dump.rdb 파일 열기:
편리 하 게 대조 하기 위해 서 나 는 그림 에 Database 가 시작 하 는 위치,즉 16 진법 의 FE 를 표시 했다.
1.database[selectDB]:알 수 있 듯 이 selectDB 는 사실 유 니 코드 로 표시 할 수 없 는 바이트 입 니 다.16 진법 은 FE 입 니 다.redis 가 이 문 자 를 만 났 을 때 자신 이 무엇 을 해 야 하 는 지 알 수 있 습 니 다...select 명령 을 실행 할 준 비 를 해 야 하 는데...
2. database[db_number]:FE 후에 우 리 는 16 진법 의'03',즉 세 번 째 데이터 베이스 로 전환 하 는 것 을 보 았 습 니 다.기억 하 십 니까?내 가 이전에 set 데 이 터 를 실 행 했 을 때 증 금 은 select 3 를 실 행 했 습 니 다.즉,데 이 터 를 3 번 데이터베이스 에 set 한 적 이 있 습 니 다.만약 에 잊 어 버 리 면 괜 찮 습 니 다.redis 클 라 이언 트 로 열 어서 보 여 드 리 겠 습 니 다~
3.database[pairs][type]:select 의 어떤 데이터 베 이 스 를 알 고 나 면 다음 작업 은 key,value 데 이 터 를 어떻게 분석 하 는 지 알 수 있 습 니 다.key/value 데이터 에서 첫 번 째 는 type 입 니 다.사실은 이 type 은 value 의 encoding 유형 입 니 다.winHex 에서 표시 하 는 0,즉 다음 과 같은 소스 코드 를 볼 수 있 습 니 다.
4.database[pairs][key][len]:type 다음 에 key 라 고 하 는데 key 의 조합 모드 는[len,value]입 니 다.그 중에서 len 은 key 의 길이 입 니 다.winHex 에서'04'를 나타 내 는 것 을 볼 수 있 습 니 다.즉,name 의 길 이 는 4 입 니 다.그 렇 죠...
5.database[pairs][key][value]와 같은 이치 입 니 다.여기 모델 도[len,value]입 니 다.앞 에는 value 의 length 이 고 뒤 에는 value 의 구체 적 인 값 입 니 다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Redis 해시에 대한 완벽한 가이드변경 가능하므로 필요에 따라 쉽게 변경하고 업데이트할 수 있습니다. Redis 해시는 구조가 평평하므로 JSON에서와 같이 여러 수준을 가질 수 없습니다. redis 해시의 명명 규칙은 hash:key 로 입력되므로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.