github.com/nutsdb/nutsdb@v1.0.4/examples/basic/main.go (about) 1 package main 2 3 import ( 4 "fmt" 5 "io/ioutil" 6 "log" 7 "os" 8 9 "github.com/nutsdb/nutsdb" 10 ) 11 12 var ( 13 db *nutsdb.DB 14 bucket string 15 ) 16 17 func init() { 18 fileDir := "/tmp/nutsdb_example" 19 20 files, _ := ioutil.ReadDir(fileDir) 21 for _, f := range files { 22 name := f.Name() 23 if name != "" { 24 fmt.Println(fileDir + "/" + name) 25 err := os.RemoveAll(fileDir + "/" + name) 26 if err != nil { 27 panic(err) 28 } 29 } 30 } 31 db, _ = nutsdb.Open( 32 nutsdb.DefaultOptions, 33 nutsdb.WithDir(fileDir), 34 nutsdb.WithSegmentSize(1024*1024), // 1MB 35 ) 36 bucket = "bucketForString" 37 } 38 39 func main() { 40 // create bucket first 41 createBucket() 42 43 // insert 44 put() 45 // read 46 read() 47 48 // delete 49 delete() 50 // read 51 read() 52 53 // insert 54 put() 55 // read 56 read() 57 58 // update 59 put2() 60 // read 61 read() 62 63 // get value length 64 valueLen() 65 66 // get new value and old value 67 getSet() 68 // read 69 read() 70 71 //put if not exists 72 put3() 73 74 //put if exits 75 put4() 76 77 // get remaining TTL 78 getTTL() 79 80 // save name2 as persistent 81 persist() 82 } 83 84 func createBucket() { 85 if err := db.Update( 86 func(tx *nutsdb.Tx) error { 87 return tx.NewBucket(nutsdb.DataStructureBTree, bucket) 88 }); err != nil { 89 log.Fatal(err) 90 } 91 } 92 93 func delete() { 94 if err := db.Update( 95 func(tx *nutsdb.Tx) error { 96 key := []byte("name1") 97 return tx.Delete(bucket, key) 98 }); err != nil { 99 log.Fatal(err) 100 } 101 } 102 103 func put() { 104 if err := db.Update( 105 func(tx *nutsdb.Tx) error { 106 key := []byte("name1") 107 val := []byte("val1") 108 return tx.Put(bucket, key, val, 0) 109 }); err != nil { 110 log.Fatal(err) 111 } 112 } 113 func put2() { 114 if err := db.Update( 115 func(tx *nutsdb.Tx) error { 116 key := []byte("name1") 117 val := []byte("val2") 118 return tx.Put(bucket, key, val, 0) 119 }); err != nil { 120 log.Fatal(err) 121 } 122 } 123 124 func put3() { 125 if err := db.Update( 126 func(tx *nutsdb.Tx) error { 127 key := []byte("name2") 128 val := []byte("val2") 129 return tx.PutIfNotExists(bucket, key, val, 0) 130 }); err != nil { 131 log.Fatal(err) 132 } 133 } 134 135 func put4() { 136 if err := db.Update( 137 func(tx *nutsdb.Tx) error { 138 key := []byte("name2") 139 val := []byte("val2") 140 return tx.PutIfExists(bucket, key, val, 100) 141 }); err != nil { 142 log.Fatal(err) 143 } 144 } 145 146 func read() { 147 if err := db.View( 148 func(tx *nutsdb.Tx) error { 149 key := []byte("name1") 150 value, err := tx.Get(bucket, key) 151 if err != nil { 152 return err 153 } 154 fmt.Println("val:", string(value)) 155 156 return nil 157 }); err != nil { 158 log.Println(err) 159 } 160 } 161 162 func valueLen() { 163 if err := db.View( 164 func(tx *nutsdb.Tx) error { 165 key := []byte("name1") 166 value, err := tx.ValueLen(bucket, key) 167 if err != nil { 168 return err 169 } 170 fmt.Println("value length:", value) 171 172 return nil 173 }); err != nil { 174 log.Println(err) 175 } 176 } 177 178 func getSet() { 179 if err := db.Update( 180 func(tx *nutsdb.Tx) error { 181 key := []byte("name1") 182 val := []byte("val3") 183 oldValue, err := tx.GetSet(bucket, key, val) 184 if err != nil { 185 return err 186 } 187 188 fmt.Println("old value :", string(oldValue)) 189 190 return nil 191 }); err != nil { 192 log.Println(err) 193 } 194 } 195 196 func getTTL() { 197 if err := db.View(func(tx *nutsdb.Tx) error { 198 key := []byte("name2") 199 ttl, err := tx.GetTTL(bucket, key) 200 if err != nil { 201 return err 202 } 203 fmt.Println("ttl :", ttl) 204 return nil 205 }); err != nil { 206 log.Println(err) 207 } 208 } 209 210 func persist() { 211 if err := db.Update(func(tx *nutsdb.Tx) error { 212 key := []byte("name2") 213 return tx.Persist(bucket, key) 214 }); err != nil { 215 log.Println(err) 216 } 217 }