Documentation
¶
Index ¶
- Constants
- Variables
- func Int64(v []byte, err error) (int64, error)
- func MaxInt32(a int32, b int32) int32
- func MinInt32(a int32, b int32) int32
- func PutInt64(v int64) []byte
- func PutUInt64(v uint64) []byte
- func PutUint16(v uint16) []byte
- func Uint64(v []byte, err error) (uint64, error)
- type DB
- func (m *DB) Close() (err error)
- func (m *DB) DBBitmap() driver.IBitmapCmd
- func (m *DB) DBHash() driver.IHashCmd
- func (m *DB) DBList() driver.IListCmd
- func (m *DB) DBSet() driver.ISetCmd
- func (m *DB) DBString() driver.IStringCmd
- func (m *DB) DBZSet() driver.IZsetCmd
- func (db *DB) FlushDB(ctx context.Context) (drop int64, err error)
- func (db *DB) Index() int
- func (db *DB) IndexVarBuf() []byte
- func (db *DB) SetIndex(index int)
- type DBBitmap
- func (db *DBBitmap) BitCount(ctx context.Context, key []byte, start int, end int) (int64, error)
- func (db *DBBitmap) BitOP(ctx context.Context, op string, destKey []byte, srcKeys ...[]byte) (int64, error)
- func (db *DBBitmap) BitPos(ctx context.Context, key []byte, on int, start int, end int) (int64, error)
- func (db *DBBitmap) GetBit(ctx context.Context, key []byte, offset int) (int64, error)
- func (db *DBBitmap) SetBit(ctx context.Context, key []byte, offset int, on int) (int64, error)
- type DBHash
- func (db *DBHash) Del(ctx context.Context, keys ...[]byte) (int64, error)
- func (db *DBHash) Exists(ctx context.Context, key []byte) (int64, error)
- func (db *DBHash) Expire(ctx context.Context, key []byte, duration int64) (int64, error)
- func (db *DBHash) ExpireAt(ctx context.Context, key []byte, when int64) (int64, error)
- func (db *DBHash) HDel(ctx context.Context, key []byte, args ...[]byte) (int64, error)
- func (db *DBHash) HGet(ctx context.Context, key []byte, field []byte) ([]byte, error)
- func (db *DBHash) HGetAll(ctx context.Context, key []byte) ([]driver.FVPair, error)
- func (db *DBHash) HIncrBy(ctx context.Context, key []byte, field []byte, delta int64) (int64, error)
- func (db *DBHash) HKeys(ctx context.Context, key []byte) ([][]byte, error)
- func (db *DBHash) HLen(ctx context.Context, key []byte) (int64, error)
- func (db *DBHash) HMget(ctx context.Context, key []byte, args ...[]byte) ([][]byte, error)
- func (db *DBHash) HMset(ctx context.Context, key []byte, args ...driver.FVPair) error
- func (db *DBHash) HSet(ctx context.Context, key []byte, field []byte, value []byte) (int64, error)
- func (db *DBHash) HValues(ctx context.Context, key []byte) ([][]byte, error)
- func (db *DBHash) Persist(ctx context.Context, key []byte) (int64, error)
- func (db *DBHash) TTL(ctx context.Context, key []byte) (int64, error)
- type DBList
- func (db *DBList) BLPop(ctx context.Context, keys [][]byte, timeout time.Duration) ([]interface{}, error)
- func (db *DBList) BRPop(ctx context.Context, keys [][]byte, timeout time.Duration) ([]interface{}, error)
- func (db *DBList) Del(ctx context.Context, keys ...[]byte) (int64, error)
- func (db *DBList) Exists(ctx context.Context, key []byte) (int64, error)
- func (db *DBList) Expire(ctx context.Context, key []byte, duration int64) (int64, error)
- func (db *DBList) ExpireAt(ctx context.Context, key []byte, when int64) (int64, error)
- func (db *DBList) LIndex(ctx context.Context, key []byte, index int32) ([]byte, error)
- func (db *DBList) LLen(ctx context.Context, key []byte) (int64, error)
- func (db *DBList) LPop(ctx context.Context, key []byte) ([]byte, error)
- func (db *DBList) LPush(ctx context.Context, key []byte, args ...[]byte) (int64, error)
- func (db *DBList) LRange(ctx context.Context, key []byte, start int32, stop int32) ([][]byte, error)
- func (db *DBList) LSet(ctx context.Context, key []byte, index int32, value []byte) error
- func (db *DBList) LTrim(ctx context.Context, key []byte, start, stop int64) error
- func (db *DBList) LTrimBack(ctx context.Context, key []byte, trimSize int32) (int32, error)
- func (db *DBList) LTrimFront(ctx context.Context, key []byte, trimSize int32) (int32, error)
- func (db *DBList) Persist(ctx context.Context, key []byte) (int64, error)
- func (db *DBList) RPop(ctx context.Context, key []byte) ([]byte, error)
- func (db *DBList) RPush(ctx context.Context, key []byte, args ...[]byte) (int64, error)
- func (db *DBList) TTL(ctx context.Context, key []byte) (int64, error)
- type DBSet
- func (db *DBSet) Del(ctx context.Context, keys ...[]byte) (int64, error)
- func (db *DBSet) Exists(ctx context.Context, key []byte) (int64, error)
- func (db *DBSet) Expire(ctx context.Context, key []byte, duration int64) (int64, error)
- func (db *DBSet) ExpireAt(ctx context.Context, key []byte, when int64) (int64, error)
- func (db *DBSet) Persist(ctx context.Context, key []byte) (int64, error)
- func (db *DBSet) SAdd(ctx context.Context, key []byte, args ...[]byte) (int64, error)
- func (db *DBSet) SCard(ctx context.Context, key []byte) (int64, error)
- func (db *DBSet) SDiff(ctx context.Context, keys ...[]byte) ([][]byte, error)
- func (db *DBSet) SDiffStore(ctx context.Context, dstKey []byte, keys ...[]byte) (int64, error)
- func (db *DBSet) SInter(ctx context.Context, keys ...[]byte) ([][]byte, error)
- func (db *DBSet) SInterStore(ctx context.Context, dstKey []byte, keys ...[]byte) (int64, error)
- func (db *DBSet) SIsMember(ctx context.Context, key []byte, member []byte) (int64, error)
- func (db *DBSet) SMembers(ctx context.Context, key []byte) ([][]byte, error)
- func (db *DBSet) SRem(ctx context.Context, key []byte, args ...[]byte) (int64, error)
- func (db *DBSet) SUnion(ctx context.Context, keys ...[]byte) ([][]byte, error)
- func (db *DBSet) SUnionStore(ctx context.Context, dstKey []byte, keys ...[]byte) (int64, error)
- func (db *DBSet) TTL(ctx context.Context, key []byte) (int64, error)
- type DBString
- func (db *DBString) Append(ctx context.Context, key []byte, value []byte) (int64, error)
- func (db *DBString) Decr(ctx context.Context, key []byte) (int64, error)
- func (db *DBString) DecrBy(ctx context.Context, key []byte, decrement int64) (int64, error)
- func (db *DBString) Del(ctx context.Context, keys ...[]byte) (int64, error)
- func (db *DBString) Exists(ctx context.Context, key []byte) (int64, error)
- func (db *DBString) Expire(ctx context.Context, key []byte, duration int64) (int64, error)
- func (db *DBString) ExpireAt(ctx context.Context, key []byte, when int64) (int64, error)
- func (db *DBString) Get(ctx context.Context, key []byte) (val []byte, err error)
- func (db *DBString) GetRange(ctx context.Context, key []byte, start int, end int) ([]byte, error)
- func (db *DBString) GetSet(ctx context.Context, key []byte, value []byte) ([]byte, error)
- func (db *DBString) GetSlice(ctx context.Context, key []byte) (openkvdriver.ISlice, error)
- func (db *DBString) Incr(ctx context.Context, key []byte) (int64, error)
- func (db *DBString) IncrBy(ctx context.Context, key []byte, increment int64) (int64, error)
- func (db *DBString) MGet(ctx context.Context, keys ...[]byte) ([][]byte, error)
- func (db *DBString) MSet(ctx context.Context, args ...driver.KVPair) error
- func (db *DBString) Persist(ctx context.Context, key []byte) (int64, error)
- func (db *DBString) Set(ctx context.Context, key []byte, value []byte) error
- func (db *DBString) SetEX(ctx context.Context, key []byte, duration int64, value []byte) (err error)
- func (db *DBString) SetNX(ctx context.Context, key []byte, value []byte) (n int64, err error)
- func (db *DBString) SetNXEX(ctx context.Context, key []byte, duration int64, value []byte) (int64, error)
- func (db *DBString) SetRange(ctx context.Context, key []byte, offset int, value []byte) (int64, error)
- func (db *DBString) SetXXEX(ctx context.Context, key []byte, duration int64, value []byte) (int64, error)
- func (db *DBString) StrLen(ctx context.Context, key []byte) (int64, error)
- func (db *DBString) TTL(ctx context.Context, key []byte) (int64, error)
- type DBZSet
- func (db *DBZSet) Del(ctx context.Context, keys ...[]byte) (int64, error)
- func (db *DBZSet) Exists(ctx context.Context, key []byte) (int64, error)
- func (db *DBZSet) Expire(ctx context.Context, key []byte, duration int64) (int64, error)
- func (db *DBZSet) ExpireAt(ctx context.Context, key []byte, when int64) (int64, error)
- func (db *DBZSet) Persist(ctx context.Context, key []byte) (int64, error)
- func (db *DBZSet) TTL(ctx context.Context, key []byte) (int64, error)
- func (db *DBZSet) ZAdd(ctx context.Context, key []byte, args ...driver.ScorePair) (int64, error)
- func (db *DBZSet) ZCard(ctx context.Context, key []byte) (int64, error)
- func (db *DBZSet) ZCount(ctx context.Context, key []byte, min int64, max int64) (int64, error)
- func (db *DBZSet) ZIncrBy(ctx context.Context, key []byte, delta int64, member []byte) (int64, error)
- func (db *DBZSet) ZInterStore(ctx context.Context, destKey []byte, srcKeys [][]byte, weights []int64, ...) (int64, error)
- func (db *DBZSet) ZLexCount(ctx context.Context, key []byte, min []byte, max []byte, ...) (int64, error)
- func (db *DBZSet) ZRangeByLex(ctx context.Context, key []byte, min []byte, max []byte, ...) ([][]byte, error)
- func (db *DBZSet) ZRangeByScoreGeneric(ctx context.Context, key []byte, min int64, max int64, offset int, count int, ...) ([]driver.ScorePair, error)
- func (db *DBZSet) ZRangeGeneric(ctx context.Context, key []byte, start int, stop int, reverse bool) ([]driver.ScorePair, error)
- func (db *DBZSet) ZRank(ctx context.Context, key []byte, member []byte) (int64, error)
- func (db *DBZSet) ZRem(ctx context.Context, key []byte, members ...[]byte) (int64, error)
- func (db *DBZSet) ZRemRangeByLex(ctx context.Context, key []byte, min []byte, max []byte, ...) (int64, error)
- func (db *DBZSet) ZRemRangeByRank(ctx context.Context, key []byte, start int, stop int) (int64, error)
- func (db *DBZSet) ZRemRangeByScore(ctx context.Context, key []byte, min int64, max int64) (int64, error)
- func (db *DBZSet) ZRevRange(ctx context.Context, key []byte, start int, stop int) ([]driver.ScorePair, error)
- func (db *DBZSet) ZRevRangeByScore(ctx context.Context, key []byte, min int64, max int64, offset int, count int) ([]driver.ScorePair, error)
- func (db *DBZSet) ZRevRank(ctx context.Context, key []byte, member []byte) (int64, error)
- func (db *DBZSet) ZScore(ctx context.Context, key []byte, member []byte) (int64, error)
- func (db *DBZSet) ZUnionStore(ctx context.Context, destKey []byte, srcKeys [][]byte, weights []int64, ...) (int64, error)
- type DataType
- type GCChecker
- type LeaderChecker
- type Storager
- func (m *Storager) Close() (err error)
- func (m *Storager) FlushAll(ctx context.Context) (err error)
- func (m *Storager) InitOpts(opts *config.StoragerOptions)
- func (m *Storager) Name() string
- func (store *Storager) Open(ctx context.Context) (err error)
- func (m *Storager) PrefixKey() []byte
- func (m *Storager) Select(ctx context.Context, index int) (idb driver.IDB, err error)
- func (m *Storager) SetPrefix(prefix string)
- type TTLChecker
Constants ¶
const ( // max allowed databases MaxDatabases int = 128 // 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 // default scan count DefaultScanCount int = 10 )
For different const size configuration
const ( StringName = "STRING" ListName = "LIST" HashName = "HASH" SetName = "SET" ZSetName = "ZSET" BitmapName = "BITMAP" )
For different type name
const ( NoneType byte = iota StringType HashType HSizeType ListType LMetaType SetType SSizeType ZSetType ZSizeType ZScoreType ExpTimeType ExpMetaType BitmapType )
for backend store key type notice: Please add new type in order
const ( UnionType byte = 51 DiffType byte = 52 InterType byte = 53 )
For set op
const ( MinScore int64 = math.MinInt64 + 1 MaxScore int64 = math.MaxInt64 InvalidScore int64 = math.MinInt64 AggregateSum = "sum" AggregateMin = "min" AggregateMax = "max" )
For zset op
const ( BitAND = "and" BitOR = "or" BitXOR = "xor" BitNot = "not" )
For bit operation
const ( LeaderPreKey = 255 GCPreKey = 256 )
For checker job operation key
const (
RegisterStoragerName = "xdis-tikv"
)
const (
ScanOnceNums = 1024
)
for scan
Variables ¶
var ( ErrCmdNotSupport = errors.New("ERR cmd not supported") ErrIntNumber = errors.New("ERR invalid integer") ErrKeySize = errors.New("ERR invalid key size") ErrValueSize = errors.New("ERR invalid value size") ErrExpireValue = errors.New("ERR invalid expire value") ErrStringKey = errors.New("ERR invalid encode string key") ErrLMetaKey = errors.New("ERR invalid lmeta key") ErrListKey = errors.New("ERR invalid list key") ErrListSeq = errors.New("ERR invalid list sequence, overflow") ErrListIndex = errors.New("ERR invalid list index") ErrHashKey = errors.New("ERR invalid hash key") ErrHashIntVal = errors.New("ERR hash value is not an integer") ErrHSizeKey = errors.New("ERR invalid hsize key") ErrHashFieldSize = errors.New("ERR invalid hash field size") ErrSetKey = errors.New("ERR invalid set key") ErrSSizeKey = errors.New("ERR invalid ssize key") ErrSetMemberSize = errors.New("ERR invalid set member size") ErrZSizeKey = errors.New("ERR invalid zsize key") ErrZSetKey = errors.New("ERR invalid zset key") ErrZScoreKey = errors.New("ERR invalid zscore key") ErrScoreOverflow = errors.New("ERR zset score overflow") ErrInvalidAggregate = errors.New("ERR invalid aggregate") ErrInvalidWeightNum = errors.New("ERR invalid weight number") ErrInvalidSrcKeyNum = errors.New("ERR invalid src key number") ErrZSetMemberSize = errors.New("ERR invalid zset member size") ErrExpMetaKey = errors.New("ERR invalid expire meta key") ErrExpTimeKey = errors.New("ERR invalid expire time key") ErrDataType = errors.New("ERR error data type") ErrMetaKey = errors.New("ERR error meta key") ErrBitmapKey = errors.New("ERR invalid encode bitmap key") // For different common errors ErrScoreMiss = errors.New("ERR zset score miss") // for job err ErrLeaderValSize = errors.New("ERR invalid leader checker job val size") ErrTTLNoExp = errors.New("ERR TTL no exp to del") )
var TypeName = map[byte]string{ StringType: "string", HashType: "hash", HSizeType: "hsize", ListType: "list", LMetaType: "lmeta", SetType: "set", SSizeType: "ssize", ZSetType: "zset", ZSizeType: "zsize", ZScoreType: "zscore", ExpTimeType: "exptime", ExpMetaType: "expmeta", BitmapType: "bitmap", }
TypeName is the map of type -> name
Functions ¶
Types ¶
type DB ¶
type DB struct {
// contains filtered or unexported fields
}
DB core sturct impl like redis string, list, hash, set, zset, bitmap struct store db op
func (*DB) DBBitmap ¶
func (m *DB) DBBitmap() driver.IBitmapCmd
func (*DB) DBString ¶
func (m *DB) DBString() driver.IStringCmd
func (*DB) IndexVarBuf ¶
IndexVarBuf gets the index varint buf of database.
type DBBitmap ¶
type DBBitmap struct {
*DB
}
func NewDBBitmap ¶
type DBHash ¶
type DBHash struct {
*DB
}
type DBList ¶
type DBList struct {
*DB
}
func (*DBList) BLPop ¶
func (db *DBList) BLPop(ctx context.Context, keys [][]byte, timeout time.Duration) ([]interface{}, error)
todo: v2 list block pop, use PD(etcd) watch to do it
func (*DBList) LTrimFront ¶
type DBSet ¶
type DBSet struct {
*DB
}
func (*DBSet) SDiffStore ¶
func (*DBSet) SInterStore ¶
func (*DBSet) SUnionStore ¶
type DBString ¶
type DBString struct {
*DB
}
func NewDBString ¶
type DBZSet ¶
type DBZSet struct {
*DB
}
func (*DBZSet) ZInterStore ¶
func (db *DBZSet) ZInterStore(ctx context.Context, destKey []byte, srcKeys [][]byte, weights []int64, aggregate []byte) (int64, error)
ZInterStore intersects the zsets and stores to dest zset.
func (*DBZSet) ZLexCount ¶
func (db *DBZSet) ZLexCount(ctx context.Context, key []byte, min []byte, max []byte, rangeType driver.RangeType) (int64, error)
ZLexCount gets the count of zset lexicographically.
func (*DBZSet) ZRangeByLex ¶
func (db *DBZSet) ZRangeByLex(ctx context.Context, key []byte, min []byte, max []byte, rangeType driver.RangeType, offset int, count int) ([][]byte, error)
ZRangeByLex scans the zset lexicographically
func (*DBZSet) ZRangeByScoreGeneric ¶
func (db *DBZSet) ZRangeByScoreGeneric(ctx context.Context, key []byte, min int64, max int64, offset int, count int, reverse bool) ([]driver.ScorePair, error)
ZRangeByScoreGeneric is a generic function to scan zset with score. min and max must be inclusive if no limit, set offset = 0 and count<0
func (*DBZSet) ZRangeGeneric ¶
func (db *DBZSet) ZRangeGeneric(ctx context.Context, key []byte, start int, stop int, reverse bool) ([]driver.ScorePair, error)
ZRangeGeneric is a generic function for scan zset. zrange/zrevrange index pos start,stop
func (*DBZSet) ZRemRangeByLex ¶
func (db *DBZSet) ZRemRangeByLex(ctx context.Context, key []byte, min []byte, max []byte, rangeType driver.RangeType) (int64, error)
ZRemRangeByLex remvoes members in [min, max] lexicographically
func (*DBZSet) ZRemRangeByRank ¶
func (db *DBZSet) ZRemRangeByRank(ctx context.Context, key []byte, start int, stop int) (int64, error)
ZRemRangeByRank removes the member at range from start to stop.
func (*DBZSet) ZRemRangeByScore ¶
func (db *DBZSet) ZRemRangeByScore(ctx context.Context, key []byte, min int64, max int64) (int64, error)
ZRemRangeByScore removes the data with score at [min, max]
func (*DBZSet) ZRevRangeByScore ¶
func (db *DBZSet) ZRevRangeByScore(ctx context.Context, key []byte, min int64, max int64, offset int, count int) ([]driver.ScorePair, error)
ZRevRangeByScore gets the data with score at [min, max]
type GCChecker ¶
type GCChecker struct {
// contains filtered or unexported fields
}
func NewGCChecker ¶
func NewGCChecker(opts *config.GCJobOptions, client *tikv.Client, leader *LeaderChecker, store *Storager) *GCChecker
type LeaderChecker ¶
type LeaderChecker struct {
// contains filtered or unexported fields
}
func NewLeaderChecker ¶
func NewLeaderChecker(opts *config.LeaderJobOptions, client *tikv.Client, store *Storager) *LeaderChecker
func (*LeaderChecker) IsLeader ¶
func (m *LeaderChecker) IsLeader(ctx context.Context) bool
IsLeader if check leader val format and lease not time out, is true
func (*LeaderChecker) Run ¶
func (m *LeaderChecker) Run(ctx context.Context)
type Storager ¶
type Storager struct {
// contains filtered or unexported fields
}
Storager core store struct for server use like redis
func New ¶
func New(opts *config.StoragerOptions) (store *Storager)
func (*Storager) FlushAll ¶
FlushAll will clear all data if use shared dist tikv , need prefix key to logic isolation use namespace/tenantId(appId/bizId);
func (*Storager) InitOpts ¶
func (m *Storager) InitOpts(opts *config.StoragerOptions)
type TTLChecker ¶
func NewTTLChecker ¶
func NewTTLChecker(db *DB) *TTLChecker
func (*TTLChecker) Run ¶
func (c *TTLChecker) Run(ctx context.Context)