1package ledis 2 3import ( 4 "errors" 5) 6 7// Version is for version 8const Version = "0.5" 9 10// DataType is defined for the different types 11type DataType byte 12 13// for out use 14const ( 15 KV DataType = iota 16 LIST 17 HASH 18 SET 19 ZSET 20) 21 22func (d DataType) String() string { 23 switch d { 24 case KV: 25 return KVName 26 case LIST: 27 return ListName 28 case HASH: 29 return HashName 30 case SET: 31 return SetName 32 case ZSET: 33 return ZSetName 34 default: 35 return "unknown" 36 } 37} 38 39// For different type name 40const ( 41 KVName = "KV" 42 ListName = "LIST" 43 HashName = "HASH" 44 SetName = "SET" 45 ZSetName = "ZSET" 46) 47 48// for backend store 49const ( 50 NoneType byte = 0 51 KVType byte = 1 52 HashType byte = 2 53 HSizeType byte = 3 54 ListType byte = 4 55 LMetaType byte = 5 56 ZSetType byte = 6 57 ZSizeType byte = 7 58 ZScoreType byte = 8 59 // BitType byte = 9 60 // BitMetaType byte = 10 61 SetType byte = 11 62 SSizeType byte = 12 63 64 maxDataType byte = 100 65 66 /* 67 I make a big mistake about TTL time key format and have to use a new one (change 101 to 103). 68 You must run the ledis-upgrade-ttl to upgrade db. 69 */ 70 ObsoleteExpTimeType byte = 101 71 ExpMetaType byte = 102 72 ExpTimeType byte = 103 73 74 MetaType byte = 201 75) 76 77// TypeName is the map of type -> name 78var TypeName = map[byte]string{ 79 KVType: "kv", 80 HashType: "hash", 81 HSizeType: "hsize", 82 ListType: "list", 83 LMetaType: "lmeta", 84 ZSetType: "zset", 85 ZSizeType: "zsize", 86 ZScoreType: "zscore", 87 // BitType: "bit", 88 // BitMetaType: "bitmeta", 89 SetType: "set", 90 SSizeType: "ssize", 91 ExpTimeType: "exptime", 92 ExpMetaType: "expmeta", 93} 94 95const ( 96 defaultScanCount int = 10 97) 98 99var ( 100 errKeySize = errors.New("invalid key size") 101 errValueSize = errors.New("invalid value size") 102 errHashFieldSize = errors.New("invalid hash field size") 103 errSetMemberSize = errors.New("invalid set member size") 104 errZSetMemberSize = errors.New("invalid zset member size") 105 errExpireValue = errors.New("invalid expire value") 106 errListIndex = errors.New("invalid list index") 107) 108 109// For different const size configuration 110const ( 111 // max allowed databases 112 MaxDatabases int = 10240 113 114 // max key size 115 MaxKeySize int = 1024 116 117 // max hash field size 118 MaxHashFieldSize int = 1024 119 120 // max zset member size 121 MaxZSetMemberSize int = 1024 122 123 // max set member size 124 MaxSetMemberSize int = 1024 125 126 // max value size 127 MaxValueSize int = 1024 * 1024 * 1024 128) 129 130// For different common errors 131var ( 132 ErrScoreMiss = errors.New("zset score miss") 133 ErrWriteInROnly = errors.New("write not support in readonly mode") 134 ErrRplInRDWR = errors.New("replication not support in read write mode") 135 ErrRplNotSupport = errors.New("replication not support") 136) 137 138// const ( 139// DBAutoCommit uint8 = 0x0 140// DBInTransaction uint8 = 0x1 141// DBInMulti uint8 = 0x2 142// ) 143 144// For bit operation 145const ( 146 BitAND = "and" 147 BitOR = "or" 148 BitXOR = "xor" 149 BitNot = "not" 150) 151