Tokyo Cabinetを試してみる
Tokyo Cabinet第1版基本仕様書に書かれているサンプルから、試してみる事にする。
試したコードはハッシュデータベースを使ったコード例
まず下記ソースコードをtchdb.cというファイルで保存した。
#include <tcutil.h>
#include <tchdb.h>
#include <stdlib.h>
#include <stdbool.h>
#include <stdint.h>
int main(int argc, char **argv){
TCHDB *hdb;
int ecode;
char *key, *value;
/* オブジェクトを作成する */
hdb = tchdbnew();
/* データベースを開く */
if(!tchdbopen(hdb, "casket.hdb", HDBOWRITER | HDBOCREAT)){
ecode = tchdbecode(hdb);
fprintf(stderr, "open error: %s\n", tchdberrmsg(ecode));
}
/* レコードを格納する */
if(!tchdbput2(hdb, "foo", "hop") ||
!tchdbput2(hdb, "bar", "step") ||
!tchdbput2(hdb, "baz", "jump")){
ecode = tchdbecode(hdb);
fprintf(stderr, "put error: %s\n", tchdberrmsg(ecode));
}
/* レコードを取得する */
value = tchdbget2(hdb, "foo");
if(value){
printf("取得した値を表示:%s\n", value);
free(value);
} else {
ecode = tchdbecode(hdb);
fprintf(stderr, "get error: %s\n", tchdberrmsg(ecode));
}
/* 横断的にレコードを参照する */
tchdbiterinit(hdb);
while((key = tchdbiternext2(hdb)) != NULL){
value = tchdbget2(hdb, key);
if(value){
printf("レコードを参照:%s:%s\n", key, value);
free(value);
}
free(key);
}
/* データベースを閉じる */
if(!tchdbclose(hdb)){
ecode = tchdbecode(hdb);
fprintf(stderr, "close error: %s\n", tchdberrmsg(ecode));
}
/* オブジェクトを破棄する */
tchdbdel(hdb);
return 0;
}
ファイルを確認する。
$ ls
tchdb.c
Cファイルが1つだけあるので、このファイルをコンパイルする必要がある。 次にファイルをコンパイルするのだが、 リンカオプションには
- -ltokyocabinet
- -lz
- -lbz2
- -lpthread
- -lm
- -lc
を加えてコンパイルする必要がある。 この時に作成する実行ファイルは今回は「tchdb」としたので、コマンドは下記になる。
$ cc -I/usr/local/include tchdb.c -o tchdb -L/usr/local/lib -ltokyocabinet -lz -lbz2 -lpthread -lm -lc
$ ls
tchdb* tchdb.c
tchdbという実行ファイルがある事を確認。 次にそのファイルを実行する。
$ ./tchdb
取得した値を表示:hop
レコードを参照:foo:hop
レコードを参照:bar:step
レコードを参照:baz:jump
と表示されるはず。 実際に「casket.hdb」ファイルが出来ているかを確認する。
$ ls
casket.hdb tchdb* tchdb.c
出来ているので、試しに同じkeyへ他の値を入れてみる。 putしている部分で、fooに対して日本語の「ほげ」を入れてみる。
if(!tchdbput2(hdb, "foo", "ほげ") ||
書き換えたら、再度コンパイルして実行。
$ cc -I/usr/local/include tchdb.c -o tchdb -L/usr/local/lib -ltokyocabinet -lz -lbz2 -lpthread -lm -lc
$ ./tchdb
取得した値を表示:ほげ
レコードを参照:foo:ほげ
レコードを参照:bar:step
レコードを参照:baz:jump
こんな感じになった。 とりあえず日本語が通る事が確認でけた。
- Posted at:
- 2009/01/16 09:29:36
- 0 Comments
- 0 TrackBacks
- Tags:
- TokyoCabinet
- Trackback:
- http://kishi-r.com/2009/01/16/c_tokyocabinet/trackback/
TrackBacks
まだ登録されていません。



Comments
まだ登録されていません。