File tree 3 files changed +66
-1
lines changed
3 files changed +66
-1
lines changed Original file line number Diff line number Diff line change @@ -7,4 +7,36 @@ A simple key-value storage engine in GO. The main purpose of this project is to
7
7
* LSM-tree
8
8
* ... ...
9
9
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
+ ```
Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change 4
4
"sync"
5
5
6
6
"github.com/letterbeezps/miniKV/engine"
7
+ "github.com/letterbeezps/miniKV/engine/memory"
7
8
"github.com/pkg/errors"
8
9
)
9
10
@@ -12,6 +13,13 @@ type MVCC struct {
12
13
Engine engine.Engine
13
14
}
14
15
16
+ func NewMVCC () * MVCC {
17
+ return & MVCC {
18
+ Lock : & sync.Mutex {},
19
+ Engine : memory .NewMemory (),
20
+ }
21
+ }
22
+
15
23
func (m * MVCC ) Begin () (* TX , error ) {
16
24
tx := & TX {
17
25
Lock : m .Lock ,
You can’t perform that action at this time.
0 commit comments