rdb_functions
RDB Functions
레디스 서버 교육 신청 |
레디스 정기점검/기술지원 Redis Technical Support |
레디스 엔터프라이즈 서버 Redis Enterprise Server |
---|
RDB Functions
이 문서는 레디스 버전 5.0.4를 기준으로 작성했습니다.
RDB Loading function과 Save function 비교
RDB Funtion 비교
타입 저장/로드 function: rdbSaveType(), rdbLoadType()
int이지만 1바이트 unsigned char로 저장한다. Data type와 rdb에서 구분자로 사용되는 OPcode를 저장한다.
- int rdbSaveType(rio *rdb, unsigned char type) --- int rdbLoadType(rio *rdb)
- rdbWriteRaw(rdb,&type,1) --- rioRead(rdb,&type,1); return unsigned char type
데이터 타입은 아래와 같다.
RDB_TYPE_STRING 0
RDB_TYPE_LIST 1
RDB_TYPE_SET 2
RDB_TYPE_ZSET 3
RDB_TYPE_HASH 4
RDB_TYPE_ZSET_2 5 /* ZSET version 2 with doubles stored in binary. */
RDB_TYPE_MODULE 6
RDB_TYPE_MODULE_2 7 /* Module value with annotations for parsing without the generating module being loaded. */
Object types for encoded objects.
RDB_TYPE_HASH_ZIPMAP 9
RDB_TYPE_LIST_ZIPLIST 10
RDB_TYPE_SET_INTSET 11
RDB_TYPE_ZSET_ZIPLIST 12
RDB_TYPE_HASH_ZIPLIST 13
RDB_TYPE_LIST_QUICKLIST 14
RDB_TYPE_STREAM_LISTPACKS 15
Special RDB opcodes (saved/loaded with rdbSaveType/rdbLoadType).
RDB_OPCODE_MODULE_AUX 247 /* Module auxiliary data. */
RDB_OPCODE_IDLE 248 /* LRU idle time. */
RDB_OPCODE_FREQ 249 /* LFU frequency. */
RDB_OPCODE_AUX 250 /* RDB aux field. */
RDB_OPCODE_RESIZEDB 251 /* Hash table resize hint. */
RDB_OPCODE_EXPIRETIME_MS 252 /* Expire time in milliseconds. */
RDB_OPCODE_EXPIRETIME 253 /* Old expire time in seconds. */
RDB_OPCODE_SELECTDB 254 /* DB number of the following keys. */
RDB_OPCODE_EOF 255 /* End of the RDB file. */
밀리초 저장/로드 function: rdbSaveMillisecondTime(), rdbLoadMillisecondTime()
밀리초를 저장/로드한다. Long long을 사용해서 8바이트를 사용한다. Expire time, Update mstime(Enterprise ver)에서 사용한다.
- int rdbSaveMillisecondTime(rio *rdb, long long t) --- long long rdbLoadMillisecondTime(rio *rdb, int rdbver)
- rdbWriteRaw(rdb,&t64,8) --- rdbLoadRaw(rdb,&t64,8)
길이 저장/로드 function: rdbSaveLen(), rdbLoadLen()
데이터의 길이(string), 개수(SET같은 타입의 경우)를 저장한다.
차지하는 바이트수는 값에 따라 다르다.
1byte: 구분자 2bits, 길이 6bits(0~63)
2bytes: 구분자 2bits, 길이 14bits(64~16,383)
5bytes: 구분자 1byte, 길이 4bytes(int)
9bytes: 구분자 1byte, 길이 8bytes(long)
- int rdbSaveLen(rio *rdb, uint64_t len) --- uint64_t rdbLoadLen(rio *rdb, int *isencoded)
- rdbWriteRaw(rdb,buf,1/2/(1/4)/(1/8)) --- rdbLoadLenByRef(rdb,isencoded,&len)
rioRead(rdb,buf,1+(1/4/8))
값(value)의 데이터 타입 저장/로드 function: rdbSaveObjectType(), rdbLoadObjectType()
val->type 또는 encoding을 위에서 설명한 rdbSaveType(), rdbLoadType()를 사용해서 저장/로드한다.
- int rdbSaveObjectType(rio *rdb, robj *o) --- int rdbLoadObjectType(rio *rdb)
- rdbSaveType(rdb,RDB_TYPE_*) --- int type = rdbLoadType(rdb); return type
값(value)을 저장/로드 function: rdbSaveObject(), rdbLoadObject()
robj를 저장/로드한다.
- ssize_t rdbSaveObject(rio *rdb, robj *o)
- robj *rdbLoadObject(int rdbtype, rio *rdb)
문자열(string)을 압축해서 저장/로드 function: rdbSaveLzfStringObject(), rdbLoadLzfStringObject()
LZF로 압축/해제한다.
- ssize_t rdbSaveLzfStringObject(rio *rdb, unsigned char *s, size_t len)
- void *rdbLoadLzfStringObject(rio *rdb, int flags, size_t *lenptr)
문자열(string)을 저장/로드 function: rdbSaveStringObject(), rdbLoadStringObject()
- ssize_t rdbSaveStringObject(rio *rdb, robj *obj)
- robj *rdbLoadStringObject(rio *rdb)
Float/Double를 저장/로드 function
- Save
- Load
<< RDB format | RDB Functions | Replication Intro >> |
---|