💿 In-memory key value store that saves your data to disk using JSON. 39 Commits
2023-07-12 10:58:20 +02:00
storage Improved interfaces 2023-07-12 10:58:20 +02:00
.editorconfig Added explanation 2023-07-05 22:02:16 +02:00
.gitignore Added explanation 2023-07-05 22:02:16 +02:00
Benchmarks_test.go Improved interfaces 2023-07-12 10:58:20 +02:00
Collection_test.go Moved storage to a separate package 2023-07-10 16:27:41 +02:00
Collection.go Improved interfaces 2023-07-12 10:58:20 +02:00
Errors.go Improved error handling 2023-07-06 17:26:19 +02:00
go.mod Updated dependencies 2023-07-10 11:40:22 +02:00
go.sum Updated dependencies 2023-07-10 11:40:22 +02:00
LICENSE Added basic information 2023-07-05 00:20:26 +02:00
README.md Improved interfaces 2023-07-12 10:58:20 +02:00
Storage.go Improved interfaces 2023-07-12 10:58:20 +02:00
StorageData.go Improved interfaces 2023-07-12 10:58:20 +02:00

ocean

In-memory key value store that saves your data to disk using JSON.

Installation

go get git.akyoto.dev/go/ocean

Example

// User type
type User struct { Name string }

// Create a new collection
todolist := ocean.New("todolist")
users := todolist.NewCollection[User](&storage.File[User]{})

// Store some data
users.Set("1", &User{Name: "User 1"})
users.Set("2", &User{Name: "User 2"})
users.Set("3", &User{Name: "User 3"})

// Read from memory
first, err := users.Get("1")

// Iterate over all users
for user := range users.All() {
    fmt.Println(user.Name)
}

Data will be stored in ~/.ocean/todolist/User.dat.

Format

1
{"name":"User 1"}
2
{"name":"User 2"}
3
{"name":"User 3"}

Benchmarks

BenchmarkGet-12         275126157                4.462 ns/op           0 B/op          0 allocs/op
BenchmarkSet-12          4796011               251.0 ns/op            32 B/op          2 allocs/op
BenchmarkDelete-12      471913158                2.530 ns/op           0 B/op          0 allocs/op
BenchmarkNew-12         48838576                22.89 ns/op           80 B/op          1 allocs/op

Usage

  1. Create all the collections you need at the start
  2. defer users.Sync() to ensure queued writes will be handled on exit
  3. Start your web server
  4. Retrieve and update your data using Get and Set calls