• Home
  • History
  • Annotate
Name Date Size #Lines LOC

..03-May-2022-

leveldb/H22-Feb-2019-

manualtest/H22-Feb-2019-

.travis.ymlH A D22-Feb-2019199

LICENSEH A D22-Feb-20191.3 KiB

README.mdH A D22-Feb-20192.3 KiB

go.modH A D22-Feb-2019207

go.sumH A D22-Feb-20192.2 KiB

README.md

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