github.com/df-mc/goleveldb@v1.1.9/README.md (about) 1 This 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 [](https://travis-ci.org/syndtr/goleveldb) 4 5 Installation 6 ----------- 7 8 go get github.com/df-mc/goleveldb/leveldb 9 10 Requirements 11 ----------- 12 13 * Need at least `go1.5` or newer. 14 15 Usage 16 ----------- 17 18 Create 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. 22 db, err := leveldb.OpenFile("path/to/db", nil) 23 ... 24 defer db.Close() 25 ... 26 ``` 27 Read or modify the database content: 28 ```go 29 // Remember that the contents of the returned slice should not be modified. 30 data, err := db.Get([]byte("key"), nil) 31 ... 32 err = db.Put([]byte("key"), []byte("value"), nil) 33 ... 34 err = db.Delete([]byte("key"), nil) 35 ... 36 ``` 37 38 Iterate over database content: 39 ```go 40 iter := db.NewIterator(nil, nil) 41 for 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 } 48 iter.Release() 49 err = iter.Error() 50 ... 51 ``` 52 Seek-then-Iterate: 53 ```go 54 iter := db.NewIterator(nil, nil) 55 for ok := iter.Seek(key); ok; ok = iter.Next() { 56 // Use key/value. 57 ... 58 } 59 iter.Release() 60 err = iter.Error() 61 ... 62 ``` 63 Iterate over subset of database content: 64 ```go 65 iter := db.NewIterator(&util.Range{Start: []byte("foo"), Limit: []byte("xoo")}, nil) 66 for iter.Next() { 67 // Use key/value. 68 ... 69 } 70 iter.Release() 71 err = iter.Error() 72 ... 73 ``` 74 Iterate over subset of database content with a particular prefix: 75 ```go 76 iter := db.NewIterator(util.BytesPrefix([]byte("foo-")), nil) 77 for iter.Next() { 78 // Use key/value. 79 ... 80 } 81 iter.Release() 82 err = iter.Error() 83 ... 84 ``` 85 Batch writes: 86 ```go 87 batch := new(leveldb.Batch) 88 batch.Put([]byte("foo"), []byte("value")) 89 batch.Put([]byte("bar"), []byte("another value")) 90 batch.Delete([]byte("baz")) 91 err = db.Write(batch, nil) 92 ... 93 ``` 94 Use bloom filter: 95 ```go 96 o := &opt.Options{ 97 Filter: filter.NewBloomFilter(10), 98 } 99 db, err := leveldb.OpenFile("path/to/db", o) 100 ... 101 defer db.Close() 102 ... 103 ``` 104 Documentation 105 ----------- 106 107 You can read package documentation [here](http:godoc.org/github.com/df-mc/goleveldb).