1// Copyright (c) 2012, Suryandaru Triandana <syndtr@gmail.com> 2// All rights reserved. 3// 4// Use of this source code is governed by a BSD-style license that can be 5// found in the LICENSE file. 6 7// Package leveldb provides implementation of LevelDB key/value database. 8// 9// Create or open a database: 10// 11// // The returned DB instance is safe for concurrent use. Which mean that all 12// // DB's methods may be called concurrently from multiple goroutine. 13// db, err := leveldb.OpenFile("path/to/db", nil) 14// ... 15// defer db.Close() 16// ... 17// 18// Read or modify the database content: 19// 20// // Remember that the contents of the returned slice should not be modified. 21// data, err := db.Get([]byte("key"), nil) 22// ... 23// err = db.Put([]byte("key"), []byte("value"), nil) 24// ... 25// err = db.Delete([]byte("key"), nil) 26// ... 27// 28// Iterate over database content: 29// 30// iter := db.NewIterator(nil, nil) 31// for iter.Next() { 32// // Remember that the contents of the returned slice should not be modified, and 33// // only valid until the next call to Next. 34// key := iter.Key() 35// value := iter.Value() 36// ... 37// } 38// iter.Release() 39// err = iter.Error() 40// ... 41// 42// Iterate over subset of database content with a particular prefix: 43// iter := db.NewIterator(util.BytesPrefix([]byte("foo-")), nil) 44// for iter.Next() { 45// // Use key/value. 46// ... 47// } 48// iter.Release() 49// err = iter.Error() 50// ... 51// 52// Seek-then-Iterate: 53// 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// 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// Batch writes: 75// 76// batch := new(leveldb.Batch) 77// batch.Put([]byte("foo"), []byte("value")) 78// batch.Put([]byte("bar"), []byte("another value")) 79// batch.Delete([]byte("baz")) 80// err = db.Write(batch, nil) 81// ... 82// 83// Use bloom filter: 84// 85// o := &opt.Options{ 86// Filter: filter.NewBloomFilter(10), 87// } 88// db, err := leveldb.OpenFile("path/to/db", o) 89// ... 90// defer db.Close() 91// ... 92package leveldb 93