A ZooKeeper-like service, but aims to provide single instance service with High Performance KV store with Event-Driven Architecture.
import (
"fmt"
"github.com/KVRes/PiccadillySDK/client"
"github.com/KVRes/PiccadillySDK/types"
)
func main() {
cli, err := client.NewClient(types.DEFAULT_ADDR)
if err != nil {
panic(err)
}
_ = cli.Connect("key", types.CreateIfNotExist, types.NoLinear)
_ = cli.Set("key", "hello")
v, _ := cli.Get("key")
fmt.Println(v)
}
PKV supports 2 write models:
- Linear (Single Thread)
- NoLinear (Multi Thread, the Store must support write concurrency control)
Tested on MacBook Air M2 (2022) 8c CPU (4P+4E), 10c GPU, 24GB RAM, 2TB SSD.
PKV benched via direct function call (WAL, GC, Flush disabled). Redis benched via redis-benchmark -q -n 500000
Data Size | Linear | NoLinear | Redis |
---|---|---|---|
100,0000 | WR Time: 1.291293166s WR Perf: 774417.48 RPS RD Time: 162.476083ms RD Perf: 6154752.02 RPS |
WR Time: 1.114430042s WR Perf: 897319.67 RPS RD Time: 161.21225ms RD Perf: 6203002.56 RPS |
WR Perf (SET): 138159.72 RPS RD Perf (GET): 134716.42 RPS |
500,000 | WR Time: 7.05466275s WR Perf: 708751.10 RPS RD Time: 973.725708ms RD Perf: 5134916.29 RPS |
WR Time: 6.241516166s WR Perf: 801087.41 RPS RD Time: 947.381083ms RD Perf: 5277707.24 RPS |
WR Perf (SET): 137931.03 RPS RD Perf (GET): 137438.16 RPS |