kvdb

package
v1.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 2, 2024 License: GPL-2.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (
	BOLT = iota
	BADGER
)

Variables

View Source
var ErrNoData = errors.New("没有数据")

Functions

This section is empty.

Types

type Badger

type Badger struct {
	// contains filtered or unexported fields
}

func (*Badger) BatchDelete

func (s *Badger) BatchDelete(keys [][]byte) error

BatchDelete

func (*Badger) BatchGet

func (s *Badger) BatchGet(keys [][]byte) ([][]byte, error)

BatchGet 返回的values与传入的keys顺序保持一致。如果key不存在或读取失败则对应的value是空数组

func (*Badger) BatchSet

func (s *Badger) BatchSet(keys, values [][]byte) error

BatchSet 多个写操作使用一个事务

func (*Badger) CheckAndGC

func (s *Badger) CheckAndGC()

(额外定义的方法)

func (*Badger) Close

func (s *Badger) Close() error

Close 把内存中的数据flush到磁盘,同时释放文件锁。如果没有close,再open时会丢失很多数据

func (*Badger) Delete

func (s *Badger) Delete(k []byte) error

Delete

func (*Badger) Get

func (s *Badger) Get(k []byte) ([]byte, error)

Get 如果key不存在会返回error:Key not found

func (*Badger) GetDbPath

func (s *Badger) GetDbPath() string

func (*Badger) Has

func (s *Badger) Has(k []byte) bool

Has 判断某个key是否存在

func (*Badger) IterDB

func (s *Badger) IterDB(fn func(k, v []byte) error) int64

IterDB 遍历整个DB

func (*Badger) IterKey

func (s *Badger) IterKey(fn func(k []byte) error) int64

IterKey 只遍历key。key是全部存在LSM tree上的,只需要读内存,所以很快

func (*Badger) Open

func (s *Badger) Open() error

func (*Badger) Set

func (s *Badger) Set(k, v []byte) error

Set 为单个写操作开一个事务

func (*Badger) WithDataPath

func (s *Badger) WithDataPath(path string) *Badger

type Bolt

type Bolt struct {
	// contains filtered or unexported fields
}

Bolt 存储结构

func (*Bolt) BatchDelete

func (s *Bolt) BatchDelete(keys [][]byte) error

批量删除

func (*Bolt) BatchGet

func (s *Bolt) BatchGet(keys [][]byte) ([][]byte, error)

批量读取,注意不保证顺序

func (*Bolt) BatchSet

func (s *Bolt) BatchSet(keys, values [][]byte) error

批量写入<key, value>

func (*Bolt) Close

func (s *Bolt) Close() error

释放所有数据库资源。在关闭数据库之前,必须先关闭所有事务。

func (*Bolt) Delete

func (s *Bolt) Delete(k []byte) error

删除

func (*Bolt) Get

func (s *Bolt) Get(k []byte) ([]byte, error)

读取key对应的value

func (*Bolt) GetDbPath

func (s *Bolt) GetDbPath() string

获取存储数据的目录

func (*Bolt) Has

func (s *Bolt) Has(k []byte) bool

判断某个key是否存在

func (*Bolt) IterDB

func (s *Bolt) IterDB(fn func(k, v []byte) error) int64

遍历数据库,返回数据的条数

func (*Bolt) IterKey

func (s *Bolt) IterKey(fn func(k []byte) error) int64

遍历数据库,返回key的条数

func (*Bolt) Open

func (s *Bolt) Open() error

初始化DB

func (*Bolt) Set

func (s *Bolt) Set(k, v []byte) error

写入<key, value>

func (*Bolt) WALName

func (s *Bolt) WALName() string

WALName returns the path to currently open database file.(额外定义的方法)

func (*Bolt) WithBucket

func (s *Bolt) WithBucket(bucket string) *Bolt

func (*Bolt) WithDataPath

func (s *Bolt) WithDataPath(path string) *Bolt

使用 Builder 模式来构建 Bolt 结构体

type IKeyValueDB

type IKeyValueDB interface {
	Open() error                              //初始化DB
	GetDbPath() string                        //获取存储数据的目录
	Set(k, v []byte) error                    //写入<key, value>
	BatchSet(keys, values [][]byte) error     //批量写入<key, value>
	Get(k []byte) ([]byte, error)             //读取key对应的value
	BatchGet(keys [][]byte) ([][]byte, error) //批量读取,注意不保证顺序
	Delete(k []byte) error                    //删除
	BatchDelete(keys [][]byte) error          //批量删除
	Has(k []byte) bool                        //判断某个key是否存在
	IterDB(fn func(k, v []byte) error) int64  //遍历数据库,返回数据的条数
	IterKey(fn func(k []byte) error) int64    //遍历数据库,返回key的条数
	Close() error                             //把内存中的数据flush到磁盘,同时释放文件锁
}

操作各类数据库的接口

func GetKetValueDB

func GetKetValueDB(dbType int, path string) (IKeyValueDB, error)

工厂模式,可以根据传入的dbType构建不同的数据库产品,返回产品的接口

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL