rdb

package
v1.0.4 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Oct 12, 2024 License: Apache-2.0 Imports: 18 Imported by: 0

Documentation

Index

Constants

View Source
const (
	RdbObjectString   = iota
	RdbObjectList     = iota
	RdbObjectSet      = iota
	RdbObjectZSet     = iota
	RdbObjectHash     = iota
	RdbObjectStream   = iota
	RdbObjectModule   = iota
	RdbObjectFunction = iota
	RdbObjectAux      = iota
)
View Source
const (
	RdbTypeString  = 0
	RdbTypeList    = 1
	RdbTypeSet     = 2
	RdbTypeZSet    = 3
	RdbTypeHash    = 4
	RdbTypeZSet2   = 5
	RdbTypeModule  = 6
	RdbTypeModule2 = 7

	RdbTypeHashZipmap      = 9
	RdbTypeListZiplist     = 10
	RdbTypeSetIntset       = 11
	RdbTypeZSetZiplist     = 12
	RdbTypeHashZiplist     = 13
	RdbTypeQuicklist       = 14
	RDBTypeStreamListPacks = 15 // stream
	RdbTypeHashListpack    = 16
	RdbTypeZSetListpack    = 17

	RdbTypeQuicklist2       = 18
	RDBTypeStreamListPacks2 = 19 // stream

	RdbTypeSetListpack      = 20
	RdbTypeStreamListPacks3 = 21 // RDB_TYPE_STREAM_LISTPACKS_3

	RdbTypeFunction2 = 0xf5
	RdbTypeFunction  = 0xf6
	RdbFlagModuleAux = 0xf7
	RdbFlagIdle      = 0xf8
	RdbFlagFreq      = 0xf9
	RdbFlagAUX       = 0xfa
	RdbFlagResizeDB  = 0xfb
	RdbFlagExpiryMS  = 0xfc
	RdbFlagExpiry    = 0xfd
	RdbFlagSelectDB  = 0xfe
	RdbFlagEOF       = 0xff
)
View Source
const (
	RdbRedisSignature  = "REDIS"
	RdbAuxFieldMarker  = 0xFA
	RdbRedisVersionKey = "redis-ver"
)

Variables

View Source
var RdbVersion int64 = 11 // redis:7.2.0

var RdbVersion int64 = 10 // redis:7.0.0

Functions

func CreateValueDump

func CreateValueDump(rtype byte, data []byte) []byte

func Float64ToByte

func Float64ToByte(float float64) string

func ParseRdb added in v1.0.0

func ParseRdb(reader io.Reader, rbytes *atomic.Int64, size int, options ...RdbParseOption) chan *BinEntry

func ParseRdbVersion added in v1.0.3

func ParseRdbVersion(reader *os.File) (string, error)

Types

type AuxParser

type AuxParser struct {
	BaseParser
}

aux redis, rdb.c:rdbSaveInfoAuxFields,rdbSaveModulesAux

func (*AuxParser) ExecCmd

func (fp *AuxParser) ExecCmd(cb RdbObjExecutor)

func (*AuxParser) ReadBuffer

func (fp *AuxParser) ReadBuffer(lr *Loader)

type BaseParser

type BaseParser struct {
	// contains filtered or unexported fields
}

func (*BaseParser) CanRestore

func (bp *BaseParser) CanRestore() bool

func (*BaseParser) CreateValueDump

func (bp *BaseParser) CreateValueDump() []byte

redis, cluster.c:verifyDumpPayload

func (*BaseParser) DB

func (bp *BaseParser) DB() uint32

func (*BaseParser) FirstBin

func (bp *BaseParser) FirstBin() bool

func (*BaseParser) IsSplited

func (bp *BaseParser) IsSplited() bool

func (*BaseParser) Key

func (bp *BaseParser) Key() []byte

func (*BaseParser) RdbType

func (bp *BaseParser) RdbType() int

func (*BaseParser) Type

func (bp *BaseParser) Type() int

func (*BaseParser) Value

func (bp *BaseParser) Value() []byte

func (*BaseParser) ValueDumpSize

func (bp *BaseParser) ValueDumpSize() int

type BinEntry

type BinEntry struct {
	DB   int
	Key  []byte
	Type byte

	ExpireAt     uint64
	IdleTime     uint32
	Freq         uint8
	Err          error
	ObjectParser Parser
	Done         bool
	// contains filtered or unexported fields
}

func (*BinEntry) CanRestore

func (be *BinEntry) CanRestore() bool

func (*BinEntry) DumpValue

func (be *BinEntry) DumpValue() []byte

func (*BinEntry) FirstBin

func (be *BinEntry) FirstBin() bool

func (*BinEntry) Value

func (be *BinEntry) Value() []byte

type CountReader added in v1.0.0

type CountReader struct {
	// contains filtered or unexported fields
}

func NewCountReader added in v1.0.0

func NewCountReader(r io.Reader, p *atomic.Int64) *CountReader

func (*CountReader) Count added in v1.0.0

func (r *CountReader) Count() int64

func (*CountReader) Read added in v1.0.0

func (r *CountReader) Read(p []byte) (int, error)

func (*CountReader) ResetCounter added in v1.0.0

func (r *CountReader) ResetCounter() int64

type FunctionParser

type FunctionParser struct {
	BaseParser
	// contains filtered or unexported fields
}

function

func (*FunctionParser) ExecCmd

func (fp *FunctionParser) ExecCmd(cb RdbObjExecutor)

func (*FunctionParser) ReadBuffer

func (fp *FunctionParser) ReadBuffer(lr *Loader)

type HashPaser

type HashPaser struct {
	BaseParser
}

func (*HashPaser) ExecCmd

func (hp *HashPaser) ExecCmd(cb RdbObjExecutor)

func (*HashPaser) ReadBuffer

func (hp *HashPaser) ReadBuffer(lr *Loader)

RdbTypeHash RdbTypeHashZipmap RdbTypeHashZiplist RdbTypeHashListpack redis7.2(rdb 11) : if (sdslen(field)>64 || sdslen(value) > 64), RdbTypeHash; else RdbTypeHashListpack redis4.0(rdb 8) : if (ziplistLen(ziplist) < 512) then RdbTypeHashZiplist; else RdbTypeHash,

type ListParser

type ListParser struct {
	BaseParser
}

list

func (*ListParser) ExecCmd

func (lp *ListParser) ExecCmd(cb RdbObjExecutor)

func (*ListParser) ReadBuffer

func (lp *ListParser) ReadBuffer(lr *Loader)

4.0 : quicklist

type Loader

type Loader struct {
	*RdbReader
	// contains filtered or unexported fields
}

func NewLoader

func NewLoader(r io.Reader, options ...RdbParseOption) *Loader

func (*Loader) Footer

func (l *Loader) Footer() error

func (*Loader) Header

func (l *Loader) Header() error

redis : rdb.c:rdbSaveRio

func (*Loader) Next

func (l *Loader) Next() (entry *BinEntry, err error)

type ModuleParser

type ModuleParser struct {
	BaseParser
	// contains filtered or unexported fields
}

module

func (*ModuleParser) ExecCmd

func (mp *ModuleParser) ExecCmd(cb RdbObjExecutor)

func (*ModuleParser) ReadBuffer

func (mp *ModuleParser) ReadBuffer(lr *Loader)

type Parser

type Parser interface {
	Type() int
	RdbType() int
	ReadBuffer(*Loader)
	ExecCmd(RdbObjExecutor)
	Key() []byte
	Value() []byte
	CreateValueDump() []byte
	ValueDumpSize() int
	FirstBin() bool
	IsSplited() bool
	DB() uint32
	CanRestore() bool
}

Parser parse rdb to redis commands throw panic if something is wrong redis : rdb.c:rdbLoadObject, rdbSaveRio

func NewParser

func NewParser(t byte, rdbVersion int64, targetRedisVersion string, targetFunctionExist string) (Parser, error)

type RdbObjExecutor

type RdbObjExecutor func(cmd string, args ...interface{}) error

type RdbParseOption added in v1.0.0

type RdbParseOption func(o *rdbParseOptions)

func WithFunctionExists added in v1.0.0

func WithFunctionExists(functionExists string) RdbParseOption

func WithTargetRedisVersion added in v1.0.0

func WithTargetRedisVersion(version string) RdbParseOption

type RdbReader

type RdbReader struct {
	// contains filtered or unexported fields
}

func NewRdbReader

func NewRdbReader(r io.Reader) *RdbReader

func (*RdbReader) CountZipmapItems

func (r *RdbReader) CountZipmapItems(buf *util.SliceBuffer) int

func (*RdbReader) CountZipmapItemsP

func (r *RdbReader) CountZipmapItemsP(buf *util.SliceBuffer) int

func (*RdbReader) Read

func (r *RdbReader) Read(p []byte) (int, error)

func (*RdbReader) Read16ByteP

func (r *RdbReader) Read16ByteP() []byte

func (*RdbReader) Read8ByteP

func (r *RdbReader) Read8ByteP() []byte

func (*RdbReader) ReadByte

func (r *RdbReader) ReadByte() (byte, error)

func (*RdbReader) ReadByteP

func (r *RdbReader) ReadByteP() byte

func (*RdbReader) ReadBytes

func (r *RdbReader) ReadBytes(n int) ([]byte, error)

func (*RdbReader) ReadBytesP

func (r *RdbReader) ReadBytesP(n int) []byte

func (*RdbReader) ReadDouble

func (r *RdbReader) ReadDouble() (float64, error)

func (*RdbReader) ReadDoubleP

func (r *RdbReader) ReadDoubleP() float64

func (*RdbReader) ReadFloat

func (r *RdbReader) ReadFloat() (float64, error)

func (*RdbReader) ReadFloatP

func (r *RdbReader) ReadFloatP() float64

func (*RdbReader) ReadInt16

func (r *RdbReader) ReadInt16() (int16, error)

func (*RdbReader) ReadInt32

func (r *RdbReader) ReadInt32() (int32, error)

func (*RdbReader) ReadInt8

func (r *RdbReader) ReadInt8() (int8, error)

func (*RdbReader) ReadLength

func (r *RdbReader) ReadLength() (uint32, error)

func (*RdbReader) ReadLength64

func (r *RdbReader) ReadLength64() (uint64, error)

func (*RdbReader) ReadLength64P

func (r *RdbReader) ReadLength64P() uint64

func (*RdbReader) ReadLengthP

func (r *RdbReader) ReadLengthP() uint32

func (*RdbReader) ReadString

func (r *RdbReader) ReadString() ([]byte, error)

func (*RdbReader) ReadStringP

func (r *RdbReader) ReadStringP() []byte

func (*RdbReader) ReadUint16

func (r *RdbReader) ReadUint16() (uint16, error)

func (*RdbReader) ReadUint32

func (r *RdbReader) ReadUint32() (uint32, error)

func (*RdbReader) ReadUint32BigEndian

func (r *RdbReader) ReadUint32BigEndian() (uint32, error)

func (*RdbReader) ReadUint32P

func (r *RdbReader) ReadUint32P() uint32

func (*RdbReader) ReadUint64

func (r *RdbReader) ReadUint64() (uint64, error)

func (*RdbReader) ReadUint64BigEndian

func (r *RdbReader) ReadUint64BigEndian() (uint64, error)

func (*RdbReader) ReadUint64P

func (r *RdbReader) ReadUint64P() uint64

func (*RdbReader) ReadUint8

func (r *RdbReader) ReadUint8() (uint8, error)

func (*RdbReader) ReadUint8P

func (r *RdbReader) ReadUint8P() uint8

func (*RdbReader) ReadZipmapItem

func (r *RdbReader) ReadZipmapItem(buf *util.SliceBuffer, readFree bool) []byte

func (*RdbReader) ReadZipmapItemP

func (r *RdbReader) ReadZipmapItemP(buf *util.SliceBuffer, readFree bool) []byte

type SetParser

type SetParser struct {
	BaseParser
}

func (*SetParser) ExecCmd

func (sp *SetParser) ExecCmd(cb RdbObjExecutor)

func (*SetParser) ReadBuffer

func (sp *SetParser) ReadBuffer(lr *Loader)

type StreamParser

type StreamParser struct {
	BaseParser
}

stream redis5.0+ redis5.0 : RDBTypeStreamListPacks redis7.0 : RDBTypeStreamListPacks2 redis7.2 : RdbTypeStreamListPacks3

func (*StreamParser) ExecCmd

func (sp *StreamParser) ExecCmd(cb RdbObjExecutor)

func (*StreamParser) ReadBuffer

func (sp *StreamParser) ReadBuffer(lr *Loader)

type StringParser

type StringParser struct {
	BaseParser
}

string

func (*StringParser) ExecCmd

func (sp *StringParser) ExecCmd(cb RdbObjExecutor)

func (*StringParser) ReadBuffer

func (sp *StringParser) ReadBuffer(lr *Loader)

type ZSetParser

type ZSetParser struct {
	BaseParser
}

zset

func (*ZSetParser) ExecCmd

func (zp *ZSetParser) ExecCmd(cb RdbObjExecutor)

func (*ZSetParser) ReadBuffer

func (zp *ZSetParser) ReadBuffer(lr *Loader)

redis4.0(rdb8) : ziplist_entries <= 128 then ziplist; else zset2(skiplist) redis7.2(rdb11) : entries <= 128 then listpack; else zset2

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL