A simple and fast write ahead log for Go.
- High durability
- Fast operations
- Monotonic indexes
- Batch writes
- Log truncation from front or back.
To start using wal, install Go and run go get:
$ go get -u github.com/tidwall/walThis will retrieve the library.
// open a new log filelog, err:=wal.Open("mylog", nil)
// write some entrieserr=log.Write(1, []byte("first entry"))
err=log.Write(2, []byte("second entry"))
err=log.Write(3, []byte("third entry"))
// read an entrydata, err:=log.Read(1)
println(string(data)) // output: first entry// close the logerr=log.Close()Batch writes:
// write three entries as a batchbatch:=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 entrieserr=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)Josh Baker @tidwall
wal source code is available under the MIT License.