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  }