forked from mirror/ledisdb
151 lines
2.8 KiB
Go
151 lines
2.8 KiB
Go
package ledis
|
|
|
|
import (
|
|
"errors"
|
|
)
|
|
|
|
// Version is for version
|
|
const Version = "0.5"
|
|
|
|
// DataType is defined for the different types
|
|
type DataType byte
|
|
|
|
// for out use
|
|
const (
|
|
KV DataType = iota
|
|
LIST
|
|
HASH
|
|
SET
|
|
ZSET
|
|
)
|
|
|
|
func (d DataType) String() string {
|
|
switch d {
|
|
case KV:
|
|
return KVName
|
|
case LIST:
|
|
return ListName
|
|
case HASH:
|
|
return HashName
|
|
case SET:
|
|
return SetName
|
|
case ZSET:
|
|
return ZSetName
|
|
default:
|
|
return "unknown"
|
|
}
|
|
}
|
|
|
|
// For different type name
|
|
const (
|
|
KVName = "KV"
|
|
ListName = "LIST"
|
|
HashName = "HASH"
|
|
SetName = "SET"
|
|
ZSetName = "ZSET"
|
|
)
|
|
|
|
// for backend store
|
|
const (
|
|
NoneType byte = 0
|
|
KVType byte = 1
|
|
HashType byte = 2
|
|
HSizeType byte = 3
|
|
ListType byte = 4
|
|
LMetaType byte = 5
|
|
ZSetType byte = 6
|
|
ZSizeType byte = 7
|
|
ZScoreType byte = 8
|
|
// BitType byte = 9
|
|
// BitMetaType byte = 10
|
|
SetType byte = 11
|
|
SSizeType byte = 12
|
|
|
|
maxDataType byte = 100
|
|
|
|
/*
|
|
I make a big mistake about TTL time key format and have to use a new one (change 101 to 103).
|
|
You must run the ledis-upgrade-ttl to upgrade db.
|
|
*/
|
|
ObsoleteExpTimeType byte = 101
|
|
ExpMetaType byte = 102
|
|
ExpTimeType byte = 103
|
|
|
|
MetaType byte = 201
|
|
)
|
|
|
|
// TypeName is the map of type -> name
|
|
var TypeName = map[byte]string{
|
|
KVType: "kv",
|
|
HashType: "hash",
|
|
HSizeType: "hsize",
|
|
ListType: "list",
|
|
LMetaType: "lmeta",
|
|
ZSetType: "zset",
|
|
ZSizeType: "zsize",
|
|
ZScoreType: "zscore",
|
|
// BitType: "bit",
|
|
// BitMetaType: "bitmeta",
|
|
SetType: "set",
|
|
SSizeType: "ssize",
|
|
ExpTimeType: "exptime",
|
|
ExpMetaType: "expmeta",
|
|
}
|
|
|
|
const (
|
|
defaultScanCount int = 10
|
|
)
|
|
|
|
var (
|
|
errKeySize = errors.New("invalid key size")
|
|
errValueSize = errors.New("invalid value size")
|
|
errHashFieldSize = errors.New("invalid hash field size")
|
|
errSetMemberSize = errors.New("invalid set member size")
|
|
errZSetMemberSize = errors.New("invalid zset member size")
|
|
errExpireValue = errors.New("invalid expire value")
|
|
errListIndex = errors.New("invalid list index")
|
|
)
|
|
|
|
// For different const size configuration
|
|
const (
|
|
// max allowed databases
|
|
MaxDatabases int = 10240
|
|
|
|
// max key size
|
|
MaxKeySize int = 1024
|
|
|
|
// max hash field size
|
|
MaxHashFieldSize int = 1024
|
|
|
|
// max zset member size
|
|
MaxZSetMemberSize int = 1024
|
|
|
|
// max set member size
|
|
MaxSetMemberSize int = 1024
|
|
|
|
// max value size
|
|
MaxValueSize int = 1024 * 1024 * 1024
|
|
)
|
|
|
|
// For different common errors
|
|
var (
|
|
ErrScoreMiss = errors.New("zset score miss")
|
|
ErrWriteInROnly = errors.New("write not support in readonly mode")
|
|
ErrRplInRDWR = errors.New("replication not support in read write mode")
|
|
ErrRplNotSupport = errors.New("replication not support")
|
|
)
|
|
|
|
// const (
|
|
// DBAutoCommit uint8 = 0x0
|
|
// DBInTransaction uint8 = 0x1
|
|
// DBInMulti uint8 = 0x2
|
|
// )
|
|
|
|
// For bit operation
|
|
const (
|
|
BitAND = "and"
|
|
BitOR = "or"
|
|
BitXOR = "xor"
|
|
BitNot = "not"
|
|
)
|