package ledis import ( "errors" ) const Version = "0.5" 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" } } 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 ) 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") ) const ( 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 ) 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 // ) const ( BitAND = "and" BitOR = "or" BitXOR = "xor" BitNot = "not" )