Skip to content

SDK of PiccadillyKV. Piccadilly is a High Performance KV store with Watching function

Notifications You must be signed in to change notification settings

KVRes/PiccadillySDK

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

9 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Piccadilly
An Event-Driven High-Performance Key-Value Store

Basic Concept

A ZooKeeper-like service, but aims to provide single instance service with High Performance KV store with Event-Driven Architecture.

SDK example

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)
}

Performance

PKV supports 2 write models:

  • Linear (Single Thread)
  • NoLinear (Multi Thread, the Store must support write concurrency control)

Benchmark (w/o RPC/WAL/GC)

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

About

SDK of PiccadillyKV. Piccadilly is a High Performance KV store with Watching function

Resources

Stars

Watchers

Forks

Packages

No packages published