const ( // DefaultMaxDatafileSize is the default maximum datafile size in bytes DefaultMaxDatafileSize = 1 << 20 // 1MB // DefaultMaxKeySize is the default maximum key size in bytes DefaultMaxKeySize = 64 // 64 bytes // DefaultMaxValueSize is the default value size in bytes DefaultMaxValueSize = 1 << 16 // 65KB )
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/valie 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") )
Merge merges all datafiles in the database creating hint files for faster startup. Old keys are squashed and deleted keys removes. Call this function periodically to reclaim disk space.
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.
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.
Close closes the database and removes the lock. It is important to call Close() as this is the only wat to cleanup the lock held by the open database.
Delete deletes the named key. If the key doesn't exist or an I/O error occurs the error is returned.
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.
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 returend along with the error.
Has returns true if the key exists in the database, false otherwise.
Keys returns all keys in the database as a channel of string(s)
Len returns the total number of keys in the database
Put stores the key and value in the database.
Scan performa 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.
Sync flushes all buffers to disk ensuring all data is written
Option is a function that takes a config struct and modifies it
WithMaxDatafileSize sets the maximum datafile size option
WithMaxKeySize sets the maximum key size option
WithMaxValueSize sets the maximum value size option