An open API service indexing awesome lists of open source software.

https://github.com/72sevenzy2/in-memory-database

k-v database built with go, stores key-values with serialization involved to ensure optimal performance.
https://github.com/72sevenzy2/in-memory-database

cli-tool go golang golang-cli golang-database golang-package in-memory-database

Last synced: 28 days ago
JSON representation

k-v database built with go, stores key-values with serialization involved to ensure optimal performance.

Awesome Lists containing this project

README

          

key-value style in-memory database.





  • persistant error handling for edge cases.

  • interactive cli mode, which stores variable-like data (for now only supports values of type string and int) to then be retrieved later with methods like "GET", "SET", "DEL", and "EXIT" to exit the program.

  • serializes values to bytes before appending to the database struct for optimised performance.

usage:


to start off, you can either set data using SetInt() for key-values with values having type int, or SetString() for key-values with values having type string:

```
package main

import (
"fmt"
"github.com/72sevenzy2/in-memory-database/db"
)

func main() {
v := db.NewDB()

err := v.SetInt("test1", 200) // setting ints
if err != nil {
panic(err)
}

err2 := v.SetString("test2", "hello") // setting strings
if err2 != nil {
panic(err2)
}
}
```

afterwards, you may retrieve them like so:

```
package main

import (
"fmt"
"github.com/72sevenzy2/in-memory-database/db"
)

func main() {
v := db.NewDB()

val, ok := v.GetInt("test1")
if ok {
fmt.Println(val)
}

val2, ok2 := v.GetString("test2")
if ok2 {
fmt.Println(val2)
}

}
```

if you want to retrieve all key-values with values of type strings/ints:

```
package main

import (
"fmt"
"github.com/72sevenzy2/in-memory-database/db"
)

func main() {
v := db.NewDB()

vals, ok := v.GetAllString() // vals is of type map[string]string
if ok {
for k, v := range vals {
fmt.Println(k, v)
}
}

vals2, ok2 := v.GetAllInt() // vals2 is of type map[string]uint32
if ok2 {
for k, v := range vals2 {
fmt.Println(k, v)
}
}

}
```

and finally, to delete keys:

```
package main

import (
"fmt"
"github.com/72sevenzy2/in-memory-database/db"
)

func main() {
v := db.NewDB()

v.Del("keyName")

}

```



interactive cli tutorial:


run the following to begin:



go run .


and follow up by declarin`g a variable:



SET [KeyName] [Value]


(key names only support either integers or strings as of now).

after setting a variable, you can then retrieve it like so:



GET [KeyName]


and it returns the value of the key given.

to delete a variable/key:



DEL [KeyName]

finally, to exit the program, run:



EXIT