# README
wal
A simple and fast write ahead log for Go.
Features
- High durability
- Fast operations
- Monotonic indexes
- Batch writes
- Log truncation from front or back.
Getting Started
Installing
To start using wal
, install Go and run go get
:
$ go get -u github.com/tidwall/wal
This will retrieve the library.
Example
// open a new log file
log, err := wal.Open("mylog", nil)
// write some entries
err = log.Write(1, []byte("first entry"))
err = log.Write(2, []byte("second entry"))
err = log.Write(3, []byte("third entry"))
// read an entry
data, err := log.Read(1)
println(string(data)) // output: first entry
// close the log
err = log.Close()
Batch writes:
// write three entries as a batch
batch := new(wal.Batch)
batch.Write(1, []byte("first entry"))
batch.Write(2, []byte("second entry"))
batch.Write(3, []byte("third entry"))
err = log.WriteBatch(batch)
Truncating:
// write some entries
err = log.Write(1, []byte("first entry"))
...
err = log.Write(1000, []byte("thousandth entry"))
// truncate the log from index starting 350 and ending with 950.
err = log.TruncateFront(350)
err = log.TruncateBack(950)
Contact
Josh Baker @tidwall
License
wal
source code is available under the MIT License.
# Functions
Open a new write ahead log.
# Variables
DefaultOptions for Open().
ErrClosed is returned when an operation cannot be completed because the log is closed.
ErrCorrupt is returns when the log is corrupt.
ErrNotFound is returned when an entry is not found.
ErrOutOfOrder is returned from Write() when the index is not equal to LastIndex()+1.
ErrOutOfRange is returned from TruncateFront() and TruncateBack() when the index not in the range of the log's first and last index.
# Type aliases
LogFormat is the format of the log files.