From 207f7d2bfbe3b3ca3c9d1fcf98c52a44906e6754 Mon Sep 17 00:00:00 2001 From: vinllen Date: Wed, 3 Apr 2019 19:18:28 +0800 Subject: [PATCH] support 5.0 rdb RDB_OPCODE_MODULE_AUX, RDB_OPCODE_IDLE and RDB_OPCODE_FREQ type --- src/pkg/rdb/loader.go | 24 ++++++++++++++++++++++-- src/pkg/rdb/reader.go | 12 +++++++++++- 2 files changed, 33 insertions(+), 3 deletions(-) diff --git a/src/pkg/rdb/loader.go b/src/pkg/rdb/loader.go index 5f84ac9..7ca4faf 100644 --- a/src/pkg/rdb/loader.go +++ b/src/pkg/rdb/loader.go @@ -157,8 +157,28 @@ func (l *Loader) NextBinEntry() (*BinEntry, error) { l.db = dbnum case rdbFlagEOF: return nil, nil - case rdbFlagOnlyValue: - fallthrough + case rdbFlagModuleAux: + // currently, ignore this filed + _, err := l.ReadLength() // module-id + if err != nil { + return nil, err + } + // skip module + if err = rdbLoadCheckModuleValue(l); err != nil { + return nil, err + } + case rdbFlagIdle: + // ignore idle because target redis doesn't support this for given key + _, err := l.ReadLength() + if err != nil { + return nil, err + } + case rdbFlagFreq: + // ignore freq because target redis doesn't support this for given key + _, err := l.readUint8() + if err != nil { + return nil, err + } default: var key []byte if l.remainMember == 0 { diff --git a/src/pkg/rdb/reader.go b/src/pkg/rdb/reader.go index 068eb94..f9a5c5e 100644 --- a/src/pkg/rdb/reader.go +++ b/src/pkg/rdb/reader.go @@ -35,13 +35,23 @@ const ( RdbTypeQuicklist = 14 RDBTypeStreamListPacks = 15 // stream - rdbFlagOnlyValue = 0xf9 + rdbFlagModuleAux = 0xf7 + rdbFlagIdle = 0xf8 + rdbFlagFreq = 0xf9 RdbFlagAUX = 0xfa rdbFlagResizeDB = 0xfb rdbFlagExpiryMS = 0xfc rdbFlagExpiry = 0xfd rdbFlagSelectDB = 0xfe rdbFlagEOF = 0xff + + // Module serialized values sub opcodes + rdbModuleOpcodeEof = 0 + rdbModuleOpcodeSint = 1 + rdbModuleOpcodeUint = 2 + rdbModuleOpcodeFloat = 3 + rdbModuleOpcodeDouble = 4 + rdbModuleOpcodeString = 5 ) const (