Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/tidwall/wal
Write ahead log for Go.
https://github.com/tidwall/wal
Last synced: about 2 months ago
JSON representation
Write ahead log for Go.
- Host: GitHub
- URL: https://github.com/tidwall/wal
- Owner: tidwall
- License: mit
- Created: 2019-12-31T21:56:58.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-01-02T09:23:13.000Z (9 months ago)
- Last Synced: 2024-06-18T12:37:33.510Z (3 months ago)
- Language: Go
- Size: 26.4 KB
- Stars: 561
- Watchers: 9
- Forks: 59
- Open Issues: 13
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# `wal`
[![GoDoc](https://godoc.org/github.com/tidwall/wal?status.svg)](https://godoc.org/github.com/tidwall/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`:
```sh
$ go get -u github.com/tidwall/wal
```This will retrieve the library.
### Example
```go
// 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:
```go
// 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:
```go
// 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](http://twitter.com/tidwall)
## License
`wal` source code is available under the MIT [License](/LICENSE).