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) Close() error
- func (b *Bitcask) Delete(key []byte) 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) 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
- type Stats
Examples ¶
Constants ¶
const ( // 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") // 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") )
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) 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) 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) Get ¶
Get retrieves the value of the given key. If the key is not found or an/I/O error occurs a null byte slice is returned along with the error.
func (*Bitcask) Merge ¶
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) 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 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