Versions in this module Expand all Collapse all v0 v0.4.2 Jul 7, 2019 Changes in this version + const Committed + const CountFlagDisabled + const CountFlagEnabled + const DataDeleteFlag + const DataEntryHeaderSize + const DataLPopFlag + const DataLPushFlag + const DataLRemFlag + const DataLSetFlag + const DataLTrimFlag + const DataRPopFlag + const DataRPushFlag + const DataSetFlag + const DataStructureBPTree + const DataStructureList + const DataStructureSet + const DataStructureSortedSet + const DataSuffix + const DataZAddFlag + const DataZPopMaxFlag + const DataZPopMinFlag + const DataZRemFlag + const DataZRemRangeByRankFlag + const Persistent + const PrefixScan + const RangeScan + const ScanNoLimit + const SeparatorForListKey + const SeparatorForZSetKey + const UnCommitted + var DefaultOptions = Options + var ErrBucket = errors.New("err bucket") + var ErrBucketEmpty = errors.New("bucket is empty") + var ErrCapacity = errors.New("capacity error") + var ErrCrc = errors.New(" crc error") + var ErrCrcZero = errors.New("error crc is 0") + var ErrDBClosed = errors.New("db is closed") + var ErrEntryIdxModeOpt = errors.New("err EntryIdxMode option set") + var ErrFn = errors.New("err fn") + var ErrIndexOutOfBound = errors.New("offset out of mapped region") + var ErrKeyAndValSize = errors.New("key and value size too big") + var ErrKeyEmpty = errors.New("key cannot be empty") + var ErrKeyNotFound = errors.New("key not found") + var ErrNotFoundKey = errors.New("key not found in the bucket") + var ErrPrefixScan = errors.New("prefix scans not found") + var ErrPrefixScansNoResult = errors.New("prefix scans no result") + var ErrRangeScan = errors.New("range scans not found") + var ErrScansNoResult = errors.New("range scans or prefix scans no result") + var ErrStartKey = errors.New("err start key") + var ErrTxClosed = errors.New("tx is closed") + var ErrTxNotWritable = errors.New("tx not writable") + var ErrUnmappedMemory = errors.New("unmapped memory") + func ErrBucketAndKey(bucket string, key []byte) error + func ErrNotFoundKeyInBucket(bucket string, key []byte) error + func ErrSeparatorForListKey() error + func ErrSeparatorForZSetKey() error + func ErrWhenBuildListIdx(err error) error + func IsExpired(ttl uint32, timestamp uint64) bool + func SortedEntryKeys(m map[string]*Entry) (keys []string, es map[string]*Entry) + func Truncate(path string, capacity int64, f *os.File) error + type BPTree struct + FirstKey []byte + ValidKeyCount int + func NewTree() *BPTree + func (t *BPTree) All() (records Records, err error) + func (t *BPTree) Find(key []byte) (*Record, error) + func (t *BPTree) FindLeaf(key []byte) *Node + func (t *BPTree) Insert(key []byte, e *Entry, h *Hint, countFlag bool) error + func (t *BPTree) PrefixScan(prefix []byte, limitNum int) (records Records, err error) + func (t *BPTree) Range(start, end []byte) (records Records, err error) + type BPTreeIdx map[string]*BPTree + type DB struct + ActiveFile *DataFile + BPTreeIdx BPTreeIdx + KeyCount int + ListIdx ListIdx + MaxFileID int64 + SetIdx SetIdx + SortedSetIdx SortedSetIdx + func Open(opt Options) (*DB, error) + func (db *DB) Backup(dir string) error + func (db *DB) Begin(writable bool) (tx *Tx, err error) + func (db *DB) Close() error + func (db *DB) Merge() error + func (db *DB) Update(fn func(tx *Tx) error) error + func (db *DB) View(fn func(tx *Tx) error) error + type DataFile struct + ActualSize int64 + func NewDataFile(path string, capacity int64, rwMode RWMode) (df *DataFile, err error) + func (df *DataFile) Close() (err error) + func (df *DataFile) ReadAt(off int) (e *Entry, err error) + func (df *DataFile) Sync() (err error) + func (df *DataFile) WriteAt(b []byte, off int64) (n int, err error) + type Entries []*Entry + type Entry struct + Key []byte + Meta *MetaData + Value []byte + func (e *Entry) Encode() []byte + func (e *Entry) GetCrc(buf []byte) uint32 + func (e *Entry) IsZero() bool + func (e *Entry) Size() int64 + type EntryIdxMode int + const HintKeyAndRAMIdxMode + const HintKeyValAndRAMIdxMode + type FileIORWManager struct + func NewFileIORWManager(path string, capacity int64) (*FileIORWManager, error) + func (fm *FileIORWManager) Close() (err error) + func (fm *FileIORWManager) ReadAt(b []byte, off int64) (n int, err error) + func (fm *FileIORWManager) Sync() (err error) + func (fm *FileIORWManager) WriteAt(b []byte, off int64) (n int, err error) + type Hint struct + type ListIdx map[string]*list.List + type MMapRWManager struct + func NewMMapRWManager(path string, capacity int64) (*MMapRWManager, error) + func (mm *MMapRWManager) Close() (err error) + func (mm *MMapRWManager) ReadAt(b []byte, off int64) (n int, err error) + func (mm *MMapRWManager) Sync() (err error) + func (mm *MMapRWManager) WriteAt(b []byte, off int64) (n int, err error) + type MetaData struct + Flag uint16 + TTL uint32 + type Node struct + Keys [][]byte + KeysNum int + type Options struct + Dir string + EntryIdxMode EntryIdxMode + NodeNum int64 + RWMode RWMode + SegmentSize int64 + StartFileLoadingMode RWMode + SyncEnable bool + type RWManager interface + Close func() (err error) + ReadAt func(b []byte, off int64) (n int, err error) + Sync func() (err error) + WriteAt func(b []byte, off int64) (n int, err error) + type RWMode int + const FileIO + const MMap + type Record struct + E *Entry + H *Hint + func (r *Record) IsExpired() bool + func (r *Record) UpdateRecord(h *Hint, e *Entry) error + type Records []*Record + type SetIdx map[string]*set.Set + type SortedSetIdx map[string]*zset.SortedSet + type Tx struct + func (tx *Tx) Commit() error + func (tx *Tx) Delete(bucket string, key []byte) error + func (tx *Tx) Get(bucket string, key []byte) (e *Entry, err error) + func (tx *Tx) GetAll(bucket string) (entries Entries, err error) + func (tx *Tx) LPeek(bucket string, key []byte) (item []byte, err error) + func (tx *Tx) LPop(bucket string, key []byte) (item []byte, err error) + func (tx *Tx) LPush(bucket string, key []byte, values ...[]byte) error + func (tx *Tx) LRange(bucket string, key []byte, start, end int) (list [][]byte, err error) + func (tx *Tx) LRem(bucket string, key []byte, count int) error + func (tx *Tx) LSet(bucket string, key []byte, index int, value []byte) error + func (tx *Tx) LSize(bucket string, key []byte) (int, error) + func (tx *Tx) LTrim(bucket string, key []byte, start, end int) error + func (tx *Tx) PrefixScan(bucket string, prefix []byte, limitNum int) (es Entries, err error) + func (tx *Tx) Put(bucket string, key, value []byte, ttl uint32) error + func (tx *Tx) RPeek(bucket string, key []byte) (item []byte, err error) + func (tx *Tx) RPop(bucket string, key []byte) (item []byte, err error) + func (tx *Tx) RPush(bucket string, key []byte, values ...[]byte) error + func (tx *Tx) RangeScan(bucket string, start, end []byte) (entries Entries, err error) + func (tx *Tx) Rollback() error + func (tx *Tx) SAdd(bucket string, key []byte, items ...[]byte) error + func (tx *Tx) SAreMembers(bucket string, key []byte, items ...[]byte) (bool, error) + func (tx *Tx) SCard(bucket string, key []byte) (int, error) + func (tx *Tx) SDiffByOneBucket(bucket string, key1, key2 []byte) (list [][]byte, err error) + func (tx *Tx) SDiffByTwoBuckets(bucket1 string, key1 []byte, bucket2 string, key2 []byte) (list [][]byte, err error) + func (tx *Tx) SHasKey(bucket string, key []byte) (bool, error) + func (tx *Tx) SIsMember(bucket string, key, item []byte) (bool, error) + func (tx *Tx) SMembers(bucket string, key []byte) (list [][]byte, err error) + func (tx *Tx) SMoveByOneBucket(bucket string, key1, key2, item []byte) (bool, error) + func (tx *Tx) SMoveByTwoBuckets(bucket1 string, key1 []byte, bucket2 string, key2, item []byte) (bool, error) + func (tx *Tx) SPop(bucket string, key []byte) ([]byte, error) + func (tx *Tx) SRem(bucket string, key []byte, items ...[]byte) error + func (tx *Tx) SUnionByOneBucket(bucket string, key1, key2 []byte) (list [][]byte, err error) + func (tx *Tx) SUnionByTwoBuckets(bucket1 string, key1 []byte, bucket2 string, key2 []byte) (list [][]byte, err error) + func (tx *Tx) ZAdd(bucket string, key []byte, score float64, val []byte) error + func (tx *Tx) ZCard(bucket string) (int, error) + func (tx *Tx) ZCount(bucket string, start, end float64, opts *zset.GetByScoreRangeOptions) (int, error) + func (tx *Tx) ZGetByKey(bucket string, key []byte) (*zset.SortedSetNode, error) + func (tx *Tx) ZMembers(bucket string) (map[string]*zset.SortedSetNode, error) + func (tx *Tx) ZPeekMax(bucket string) (*zset.SortedSetNode, error) + func (tx *Tx) ZPeekMin(bucket string) (*zset.SortedSetNode, error) + func (tx *Tx) ZPopMax(bucket string) (*zset.SortedSetNode, error) + func (tx *Tx) ZPopMin(bucket string) (*zset.SortedSetNode, error) + func (tx *Tx) ZRangeByRank(bucket string, start, end int) ([]*zset.SortedSetNode, error) + func (tx *Tx) ZRangeByScore(bucket string, start, end float64, opts *zset.GetByScoreRangeOptions) ([]*zset.SortedSetNode, error) + func (tx *Tx) ZRank(bucket string, key []byte) (int, error) + func (tx *Tx) ZRem(bucket, key string) error + func (tx *Tx) ZRemRangeByRank(bucket string, start, end int) error + func (tx *Tx) ZRevRank(bucket string, key []byte) (int, error) + func (tx *Tx) ZScore(bucket string, key []byte) (float64, error)