Documentation ¶
Overview ¶
Package bitcask implements a high-performance key-value store based on a WAL and LSM.
Example ¶
_, _ = Open("path/to/db")
Output:
Example (WithOptions) ¶
opts := []Option{ WithMaxKeySize(1024), WithMaxValueSize(4096), } _, _ = Open("path/to/db", opts...)
Output:
Index ¶
- Constants
- Variables
- type Bitcask
- func (b *Bitcask) Backup(path string) error
- func (b *Bitcask) Close() error
- func (b *Bitcask) Delete(key []byte) error
- func (b *Bitcask) DeleteAll() (err error)
- func (b *Bitcask) Fold(f func(key []byte) error) (err error)
- func (b *Bitcask) Get(key []byte) ([]byte, error)
- func (b *Bitcask) Has(key []byte) bool
- func (b *Bitcask) Keys() chan []byte
- func (b *Bitcask) Len() int
- func (b *Bitcask) Merge() error
- func (b *Bitcask) Put(key, value []byte) error
- func (b *Bitcask) Reclaimable() int64
- func (b *Bitcask) Reopen() error
- func (b *Bitcask) Scan(prefix []byte, f func(key []byte) error) (err error)
- func (b *Bitcask) Stats() (stats Stats, err error)
- func (b *Bitcask) Sync() error
- type Option
- func WithAutoRecovery(enabled bool) Option
- func WithDirFileModeBeforeUmask(mode os.FileMode) Option
- func WithFileFileModeBeforeUmask(mode os.FileMode) Option
- func WithMaxDatafileSize(size int) Option
- func WithMaxKeySize(size uint32) Option
- func WithMaxValueSize(size uint64) Option
- func WithSync(sync bool) Option
- type Stats
Examples ¶
Constants ¶
const ( // DefaultDirFileModeBeforeUmask is the default os.FileMode used when creating directories DefaultDirFileModeBeforeUmask = os.FileMode(0700) // DefaultFileFileModeBeforeUmask is the default os.FileMode used when creating files DefaultFileFileModeBeforeUmask = os.FileMode(0600) // DefaultMaxDatafileSize is the default maximum datafile size in bytes DefaultMaxDatafileSize = 1 << 20 // 1MB // DefaultMaxKeySize is the default maximum key size in bytes DefaultMaxKeySize = uint32(64) // 64 bytes // DefaultMaxValueSize is the default value size in bytes DefaultMaxValueSize = uint64(1 << 16) // 65KB // DefaultSync is the default file synchronization action DefaultSync = false )
Variables ¶
var ( // ErrKeyNotFound is the error returned when a key is not found ErrKeyNotFound = errors.New("error: key not found") // ErrKeyTooLarge is the error returned for a key that exceeds the // maximum allowed key size (configured with WithMaxKeySize). ErrKeyTooLarge = errors.New("error: key too large") // ErrEmptyKey is the error returned for a value with an empty key. ErrEmptyKey = errors.New("error: empty key") // ErrValueTooLarge is the error returned for a value that exceeds the // maximum allowed value size (configured with WithMaxValueSize). ErrValueTooLarge = errors.New("error: value too large") // ErrChecksumFailed is the error returned if a key/value retrieved does // not match its CRC checksum ErrChecksumFailed = errors.New("error: checksum failed") // ErrDatabaseLocked is the error returned if the database is locked // (typically opened by another process) ErrDatabaseLocked = errors.New("error: database locked") // ErrMergeInProgress is the error returned if merge is called when already a merge // is in progress ErrMergeInProgress = errors.New("error: merge already in progress") )
Functions ¶
This section is empty.
Types ¶
type Bitcask ¶
Bitcask is a struct that represents a on-disk LSM and WAL data structure and in-memory hash of key/value pairs as per the Bitcask paper and seen in the Riak database.
func Open ¶
Open opens the database at the given path with optional options. Options can be provided with the `WithXXX` functions that provide configuration options as functions.
func (*Bitcask) Backup ¶ added in v0.3.10
Backup copies db directory to given path it creates path if it does not exist
func (*Bitcask) Close ¶
Close closes the database and removes the lock. It is important to call Close() as this is the only way to cleanup the lock held by the open database.
func (*Bitcask) Delete ¶
Delete deletes the named key. If the key doesn't exist or an I/O error occurs the error is returned.
func (*Bitcask) DeleteAll ¶ added in v0.3.6
DeleteAll deletes all the keys. If an I/O error occurs the error is returned.
func (*Bitcask) Fold ¶
Fold iterates over all keys in the database calling the function `f` for each key. If the function returns an error, no further keys are processed and the error returned.
func (*Bitcask) Merge ¶ added in v0.2.2
Merge merges all datafiles in the database. Old keys are squashed and deleted keys removes. Duplicate key/value pairs are also removed. Call this function periodically to reclaim disk space.
func (*Bitcask) Reclaimable ¶ added in v0.3.10
Reclaimable returns space that can be reclaimed
func (*Bitcask) Scan ¶
Scan performs a prefix scan of keys matching the given prefix and calling the function `f` with the keys found. If the function returns an error no further keys are processed and the first error returned.
type Option ¶
Option is a function that takes a config struct and modifies it
func WithAutoRecovery ¶ added in v0.3.6
WithAutoRecovery sets auto recovery of data and index file recreation. IMPORTANT: This flag MUST BE used only if a proper backup was made of all the existing datafiles.
func WithDirFileModeBeforeUmask ¶ added in v0.3.7
WithDirFileModeBeforeUmask sets the FileMode used for each new file created.
func WithFileFileModeBeforeUmask ¶ added in v0.3.7
WithFileFileModeBeforeUmask sets the FileMode used for each new file created.
func WithMaxDatafileSize ¶
WithMaxDatafileSize sets the maximum datafile size option
func WithMaxKeySize ¶
WithMaxKeySize sets the maximum key size option
func WithMaxValueSize ¶
WithMaxValueSize sets the maximum value size option