bitcask icon indicating copy to clipboard operation
bitcask copied to clipboard

this is backend storage for riot

bitcask

this is storage backend for riot

Design Doc

riot

Example

package main

import (
	"github.com/laohanlinux/bitcask"
	"github.com/laohanlinux/go-logger/logger"
)

func main() {
	bc, err := bitcask.Open("exampleBitcaskDir", nil)
	if err != nil {
		logger.Fatal(err)
	}
	defer bc.Close()
	k1 := []byte("xiaoMing")
	v1 := []byte("毕业于新东方推土机学院")

	k2 := []byte("zhanSan")
	v2 := []byte("毕业于新东方厨师学院")

	bc.Put(k1, v1)
	bc.Put(k2, v2)

	v1, _ = bc.Get(k1)
	v2, _ = bc.Get(k2)
	logger.Info(string(k1), string(v1))
	logger.Info(string(k2), string(v2))
	// time.Sleep(time.Second * 10)
	// override
	v2 = []byte("毕业于新东方美容美发学院")
	bc.Put(k2, v2)
	v2, _ = bc.Get(k2)
	logger.Info(string(k2), string(v2))

}

go run example/bitcask_main.go

2016/01/16 16:56:11 bitcask_main.go:25 [info [xiaoMing 毕业于新东方推土机学院]]
2016/01/16 16:56:11 bitcask_main.go:26 [info [zhanSan 毕业于新东方厨师学院]]
2016/01/16 16:56:11 bitcask_main.go:32 [info [zhanSan 毕业于新东方美容美发学院]]
2016/01/16 16:56:11 bitcask_main.go:36 [info [毕业后的数据库:]]
2016/01/16 16:56:11 bitcask_main.go:41 [info [xiaoMing 已经毕业.]]
2016/01/16 16:56:11 bitcask_main.go:47 [info [zhanSan 已经毕业.]]

other Example: find it in xxxx_test.go

TODO

  • 优化数据结构,减少内存占用
  • 增加merge功能