Skip to content

Commit df84a55

Browse files
committed
supports RDBv7
1 parent 0690a8e commit df84a55

File tree

2 files changed

+36
-10
lines changed

2 files changed

+36
-10
lines changed

pkg/rdb/loader.go

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,11 @@ import (
1212

1313
"github.com/CodisLabs/redis-port/pkg/libs/errors"
1414
"github.com/CodisLabs/redis-port/pkg/rdb/digest"
15+
"github.com/spinlock/rdb"
1516
)
1617

18+
const Version = rdb.Version
19+
1720
type Loader struct {
1821
*rdbReader
1922
crc hash.Hash64
@@ -37,7 +40,7 @@ func (l *Loader) Header() error {
3740
}
3841
if version, err := strconv.ParseInt(string(header[5:]), 10, 64); err != nil {
3942
return errors.Trace(err)
40-
} else if version <= 0 || version > Version {
43+
} else if version < 1 || version > Version {
4144
return errors.Errorf("verify version, invalid RDB version number %d", version)
4245
}
4346
return nil
@@ -101,6 +104,20 @@ func (l *Loader) NextBinEntry() (*BinEntry, error) {
101104
return nil, err
102105
}
103106
switch t {
107+
case rdbFlagAux:
108+
if _, err := l.readString(); err != nil {
109+
return nil, err
110+
}
111+
if _, err := l.readString(); err != nil {
112+
return nil, err
113+
}
114+
case rdbFlagResizeDB:
115+
if _, err := l.readLength(); err != nil {
116+
return nil, err
117+
}
118+
if _, err := l.readLength(); err != nil {
119+
return nil, err
120+
}
104121
case rdbFlagExpiryMS:
105122
ttlms, err := l.readUint64()
106123
if err != nil {

pkg/rdb/reader.go

Lines changed: 18 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -13,23 +13,22 @@ import (
1313
"github.com/CodisLabs/redis-port/pkg/libs/errors"
1414
)
1515

16-
const (
17-
Version = 6
18-
)
19-
2016
const (
2117
rdbTypeString = 0
2218
rdbTypeList = 1
2319
rdbTypeSet = 2
2420
rdbTypeZSet = 3
2521
rdbTypeHash = 4
2622

27-
rdbTypeHashZipmap = 9
28-
rdbTypeListZiplist = 10
29-
rdbTypeSetIntset = 11
30-
rdbTypeZSetZiplist = 12
31-
rdbTypeHashZiplist = 13
23+
rdbTypeHashZipmap = 9
24+
rdbTypeListZiplist = 10
25+
rdbTypeSetIntset = 11
26+
rdbTypeZSetZiplist = 12
27+
rdbTypeHashZiplist = 13
28+
rdbTypeListQuicklist = 14
3229

30+
rdbFlagAux = 0xfa
31+
rdbFlagResizeDB = 0xfb
3332
rdbFlagExpiryMS = 0xfc
3433
rdbFlagExpiry = 0xfd
3534
rdbFlagSelectDB = 0xfe
@@ -135,6 +134,16 @@ func (r *rdbReader) readObjectValue(t byte) ([]byte, error) {
135134
}
136135
}
137136
}
137+
case rdbTypeListQuicklist:
138+
if n, err := r.readLength(); err != nil {
139+
return nil, err
140+
} else {
141+
for i := 0; i < int(n); i++ {
142+
if _, err := r.readString(); err != nil {
143+
return nil, err
144+
}
145+
}
146+
}
138147
}
139148
return b.Bytes(), nil
140149
}

0 commit comments

Comments
 (0)