The raftdb implements a simple distributed key-value database, using the raft distributed consensus protocol.
go get github.com/hslam/raftdb
go build -o raftdb main.go
./raftdb -h=localhost -p=7001 -c=8001 -f=9001 -path=./raftdb.1 \ -members=localhost:9001,localhost:9002,localhost:9003 ./raftdb -h=localhost -p=7002 -c=8002 -f=9002 -path=./raftdb.2 \ -members=localhost:9001,localhost:9002,localhost:9003 ./raftdb -h=localhost -p=7003 -c=8003 -f=9003 -path=./raftdb.3 \ -members=localhost:9001,localhost:9002,localhost:9003
curl -XPOST http://localhost:7001/db/foo -d 'bar'
curl http://localhost:7001/db/foo
package main import ( "fmt" "github.com/hslam/raftdb/node" ) func main() { client := node.NewClient("localhost:8001", "localhost:8002", "localhost:8003") key := "foo" value := "Hello World" if ok := client.Set(key, value); !ok { panic("set failed") } if result, ok := client.LeaseReadGet(key); ok && result != value { panic(result) } if result, ok := client.ReadIndexGet(key); ok { fmt.Println(result) } }
Hello World
Running on a three nodes cluster.
This package is licensed under a MIT license (Copyright (c) 2019 Meng Huang)
raftdb was written by Meng Huang.