redis-shake工具
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

71 lines
1.6 KiB

package structure
import (
"fmt"
"io"
"log"
"strconv"
)
const (
rdbModuleOpcodeEOF = 0 // End of module value.
rdbModuleOpcodeSINT = 1 // Signed integer.
rdbModuleOpcodeUINT = 2 // Unsigned integer.
rdbModuleOpcodeFLOAT = 3 // Float.
rdbModuleOpcodeDOUBLE = 4 // Double.
rdbModuleOpcodeSTRING = 5 // String.
)
func ReadModuleUnsigned(rd io.Reader) string {
opcode := ReadByte(rd)
if opcode != rdbModuleOpcodeUINT {
log.Panicf("Unknown module unsigned encode type")
}
value := ReadLength(rd)
return strconv.FormatUint(value, 10)
}
func ReadModuleSigned(rd io.Reader) string {
opcode := ReadByte(rd)
if opcode != rdbModuleOpcodeSINT {
log.Panicf("Unknown module signed encode type")
}
value := ReadLength(rd)
return strconv.FormatUint(value, 10)
}
func ReadModuleFloat(rd io.Reader) string {
opcode := ReadByte(rd)
if opcode != rdbModuleOpcodeDOUBLE {
log.Panicf("Unknown module double encode type")
}
value := ReadDouble(rd)
return fmt.Sprintf("%f", value)
}
func ReadModuleDouble(rd io.Reader) string {
opcode := ReadByte(rd)
if opcode != rdbModuleOpcodeDOUBLE {
log.Panicf("Unknown module double encode type")
}
value := ReadDouble(rd)
return fmt.Sprintf("%f", value)
}
func ReadModuleString(rd io.Reader) string {
opcode := ReadByte(rd)
if opcode != rdbModuleOpcodeSTRING {
log.Panicf("Unknown module string encode type")
}
return ReadString(rd)
}
func ReadModuleEof(rd io.Reader) error {
eof := ReadLength(rd)
if eof != rdbModuleOpcodeEOF {
log.Panicf("The RDB file is not teminated by the proper module value EOF marker")
}
return nil
}