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  [![Build Status](https://travis-ci.org/syndtr/goleveldb.png?branch=master)](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).