Data structure Rich data structure: KV, List, Hash, ZSet, Set. Various Backend Various backend databases to choose: LevelDB, goleveldb, LMDB, RocksDB, BoltDB or Memory. Expiration & TTL Supports expiration and ttl in all kinds of data structures. CLI Support Redis clients, like redis-cli, are supported directly. Easy Embedding Easy to embed in Go application. Data Protection Replication to guarant
概要 importするだけで使えるgolang製kvsのboltdb で、インスパイアされて、 golang製kvsのgoleveldbを紹介します。 goleveldbとは goleveldbとは、leveldbのgolang portです。(完全に同じかどうかは調べきれてません・・・) levigo等のleveldbラッパーとは違い、native golangで書かれているので、Cのleveldbライブラリを必要とせず、golangでimportするだけで簡単に利用できるのでお手軽です。 個人的には、sqliteの組み込みDBとして利用するような感覚で、組み込み永続化KVSとしての用途が向いているように思います。 leveldbについてはLevelDB入門 (基本編)が詳しいですが、そこから特徴を引用させてもらいます。 keyとvalueが任意のバイト列である データはkeyでソートさ
概要 golang製kvsのboltdbの紹介です。 LMDBのgolang portです。(完全に同じではありません) boltdbとは 別プロセスを立てること無くgolangのプログラムからImportするだけで使えるkvsです。 kvsなのでRDBが必要な場合はsqliteのamalgation code等を使うと良いと思います。 単一プロセス内に閉じるシンプルな構造のため、レプリケーション/シャーディング等は機能としてはサポートされていません。 ACID/MVCCをサポートします。 トランザクション writeとreadのトランザクションが別物でreadとwriteは相互にブロックすることはありません。 readは並列実行可能かつ非常に高速です。 writeは常に直列化されるため、デッドロックが起こり得ません。 各goroutineでトランザクションを生成する限りスレッドセーフです
package main import ( "unsafe" ) type foo struct { k int64 v int64 } func main() { f := &foo{3,4} // unsafe.Pointer() で匿名ポインタにして // uintptr() で演算可能にして // +8 バイト(64bit)足して // unsafe.Pointer で匿名ポインタに戻して // そこにはフィールド v があるはずなので *int64 にキャストして // デリファレンスすれば出来上がり *(*int64)(unsafe.Pointer((uintptr(unsafe.Pointer(f))+8))) = 5 // グヒヒ println(f.v) // 5 } 0x001c 00028 (stringbytes2.go:8) LEAL go.string."he
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く