1This is an implementation of the [LevelDB key/value database](http:code.google.com/p/leveldb) in the [Go programming language](http:golang.org). 2 3[![Build Status](https://travis-ci.org/syndtr/goleveldb.png?branch=master)](https://travis-ci.org/syndtr/goleveldb) 4 5Installation 6----------- 7 8 go get github.com/syndtr/goleveldb/leveldb 9 10Requirements 11----------- 12 13* Need at least `go1.5` or newer. 14 15Usage 16----------- 17 18Create or open a database: 19```go 20// The returned DB instance is safe for concurrent use. Which mean that all 21// DB's methods may be called concurrently from multiple goroutine. 22db, err := leveldb.OpenFile("path/to/db", nil) 23... 24defer db.Close() 25... 26``` 27Read or modify the database content: 28```go 29// Remember that the contents of the returned slice should not be modified. 30data, err := db.Get([]byte("key"), nil) 31... 32err = db.Put([]byte("key"), []byte("value"), nil) 33... 34err = db.Delete([]byte("key"), nil) 35... 36``` 37 38Iterate over database content: 39```go 40iter := db.NewIterator(nil, nil) 41for iter.Next() { 42 // Remember that the contents of the returned slice should not be modified, and 43 // only valid until the next call to Next. 44 key := iter.Key() 45 value := iter.Value() 46 ... 47} 48iter.Release() 49err = iter.Error() 50... 51``` 52Seek-then-Iterate: 53```go 54iter := db.NewIterator(nil, nil) 55for ok := iter.Seek(key); ok; ok = iter.Next() { 56 // Use key/value. 57 ... 58} 59iter.Release() 60err = iter.Error() 61... 62``` 63Iterate over subset of database content: 64```go 65iter := db.NewIterator(&util.Range{Start: []byte("foo"), Limit: []byte("xoo")}, nil) 66for iter.Next() { 67 // Use key/value. 68 ... 69} 70iter.Release() 71err = iter.Error() 72... 73``` 74Iterate over subset of database content with a particular prefix: 75```go 76iter := db.NewIterator(util.BytesPrefix([]byte("foo-")), nil) 77for iter.Next() { 78 // Use key/value. 79 ... 80} 81iter.Release() 82err = iter.Error() 83... 84``` 85Batch writes: 86```go 87batch := new(leveldb.Batch) 88batch.Put([]byte("foo"), []byte("value")) 89batch.Put([]byte("bar"), []byte("another value")) 90batch.Delete([]byte("baz")) 91err = db.Write(batch, nil) 92... 93``` 94Use bloom filter: 95```go 96o := &opt.Options{ 97 Filter: filter.NewBloomFilter(10), 98} 99db, err := leveldb.OpenFile("path/to/db", o) 100... 101defer db.Close() 102... 103``` 104Documentation 105----------- 106 107You can read package documentation [here](http:godoc.org/github.com/syndtr/goleveldb). 108