Skip to content

Commit 6565cff

Browse files
authored
Merge pull request #6 from letterbeezps/dev
add example
2 parents 718c3c8 + 8978659 commit 6565cff

File tree

3 files changed

+66
-1
lines changed

3 files changed

+66
-1
lines changed

README.md

+33-1
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,36 @@ A simple key-value storage engine in GO. The main purpose of this project is to
77
* LSM-tree
88
* ... ...
99

10-
More pratices are still begin planned.
10+
More pratices are still begin planned.
11+
12+
## example
13+
14+
### GetSet
15+
16+
```go
17+
package main
18+
19+
import (
20+
"fmt"
21+
"log"
22+
23+
mv "github.com/letterbeezps/miniKV/mvcc"
24+
)
25+
26+
func main() {
27+
db := mv.NewMVCC()
28+
tx, err := db.Begin()
29+
if err != nil {
30+
log.Fatal(err)
31+
}
32+
err = tx.Set("a", []byte("abdc"))
33+
if err != nil {
34+
log.Fatal(err)
35+
}
36+
ret, err := tx.Get("a")
37+
if err != nil {
38+
log.Fatal(err)
39+
}
40+
fmt.Println(ret)
41+
}
42+
```

cmd/example/mvcc/main.go

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package main
2+
3+
import (
4+
"fmt"
5+
"log"
6+
7+
mv "github.com/letterbeezps/miniKV/mvcc"
8+
)
9+
10+
func main() {
11+
db := mv.NewMVCC()
12+
tx, err := db.Begin()
13+
if err != nil {
14+
log.Fatal(err)
15+
}
16+
err = tx.Set("a", []byte("abdc"))
17+
if err != nil {
18+
log.Fatal(err)
19+
}
20+
ret, err := tx.Get("a")
21+
if err != nil {
22+
log.Fatal(err)
23+
}
24+
fmt.Println(ret)
25+
}

mvcc/mvcc.go

+8
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"sync"
55

66
"github.com/letterbeezps/miniKV/engine"
7+
"github.com/letterbeezps/miniKV/engine/memory"
78
"github.com/pkg/errors"
89
)
910

@@ -12,6 +13,13 @@ type MVCC struct {
1213
Engine engine.Engine
1314
}
1415

16+
func NewMVCC() *MVCC {
17+
return &MVCC{
18+
Lock: &sync.Mutex{},
19+
Engine: memory.NewMemory(),
20+
}
21+
}
22+
1523
func (m *MVCC) Begin() (*TX, error) {
1624
tx := &TX{
1725
Lock: m.Lock,

0 commit comments

Comments
 (0)