Skip to content

wmentor/kv

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

kv is simple key/value storage based on syndtr/goleveldb library.

Summary

  • Written on tiny Go
  • Go library
  • Require Go version >= 1.15
  • Simple API
  • Persistent key/value storage
  • Use LSM-tree engine
  • Has mock object for tests

Install

go get github.com/wmentor/kv

Usage

package main

import (
  "fmt"

  "github.com/wmentor/kv"
)

func main() {
  db, err := kv.Open("path=./base")
	if err != nil {
		panic(err)
	}
	defer db.Close()

  db.Set([]byte("1"), []byte("11"))
  db.Set([]byte("10"), []byte("1100"))
  db.Set([]byte("11"), []byte("1111"))
  db.Set([]byte("12"), []byte("1122"))
  db.Set([]byte("3"), []byte("33"))
  db.Set([]byte("4"), []byte("44"))
  db.Set([]byte("5"), []byte("55"))
  db.Set([]byte("6"), []byte("66"))

  fmt.Println(string(db.Get([]byte("5")))) // 55

  db.Get([]byte("7")) // nil

  fmt.Println(db.Has([]byte("5"))) // true
  db.Set([]byte("5"), nil) // remove key []byte("5")
  fmt.Println(db.Has([]byte("5"))) // false

  db.Prefix([]byte("1"), func(k, v []byte) bool {
    fmt.Println(string(k) + " " + string(v))
    return true
  })
  /* print:
  1 11
  10 1100
  11 1111
  12 1122
  */

  db.Range([]byte("12"), []byte("4"), func(k, v []byte) bool {
    fmt.Println(string(k) + " " + string(v))
    return true
  })
  /* print:
  12 1122
  2 22
  3 33
  */
}

Work with global context:

package main

import (
  "github.com/wmentor/kv"
)

func main() {
  _, err := kv.Open("path=./base global=1")
	if err != nil {
		panic(err)
	}
	defer kv.Close()

  kv.Set([]byte("1"), []byte("11"))
  kv.Set([]byte("10"), []byte("1100"))
  ...
}

Work with test context:

package main

import (
  "github.com/wmentor/kv"
)

func main() {
  _, err := kv.Open("test=1 global=1")
	if err != nil {
		panic(err)
	}
	defer kv.Close()

  kv.Set([]byte("1"), []byte("11"))
  kv.Set([]byte("10"), []byte("1100"))
  ...
}

Packages

No packages published

Languages

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy