第二章C言語例—Tokyo Cabinetのデータベース操作

3145 ワード

最近C言語のいくつかのライブラリに対するプログラミングを研究しています
 
まずは自然にTokyo Cabinetをインストール
 
tar zxvf tokyocabinet-1.4.28.tar.gz
cd tokyocabinet-1.4.28/
./configure
make
make install
cd ../
 
 
 
以下はTokyo Cabinetに対する操作であり、具体的な解釈はコード-コードが最も良い解釈であることを見ることができる.
ファイル名は:tcbdb.c
 
/**
 * Operate the Tokyo Cabinet
 * @author zhoubaochuan
 * @email:[email protected]
 * @date:2011-07-13
 * @gcc: gcc tcbdb.c  -I/usr/local/include/ -L/usr/local/lib/ -ltokyocabinet -lz -lbz2 -lrt -lpthread -lm -lc -O2 -g --static
 */

#include <stdio.h>

/* Import the Tokyo Cabinet C's library*/
#include <tcbdb.h>

int main(int argc, char *argv[]){
    char *datapath = "/opt/data/test/C/queue/tcbdb.db";
    /* Allocate a region on memory */
    char *dataname = (char *)tccalloc(1,1024);

    
    TCBDB *db = tcbdbnew(); /* Create a B+ tree database object  */
    tcbdbsetmutex(db);
    tcbdbtune(db,128,256, 32749,8,10,100);
    tcbdbsetcache(db,1024,512);
    tcbdbsetxmsiz(db,1024100);

    
    if(!tcbdbopen(db,datapath,BDBOWRITER|BDBOREADER)){  /* Open a database file and connect a B+ tree database object. */
        fprintf(stderr,"It is failure to open a database !
"); exit(1); } //free((void *)datapath); //fprintf(stderr,"==============It is successful to open a database : ===============
"); char *key = "t_key"; char *value = "zhoubaochuan"; fprintf(stderr, "============== Store value. ================
key:%s;
value:%s
", key, value); /* Store a new record into a B+ tree database object. */ tcbdbput2(db, key, value); fprintf(stderr, "============== Retrieve a record. ================
"); /* Retrieve a record in a B+ tree database object as a volatile buffer. */ char *retrieve = tcbdbget2(db,key); fprintf(stderr, "Retriver's Value:%s
", retrieve); /* Synchronize updated contents of a B+ tree database object with the file and the device. */ tcbdbsync(db); /* */ /* Close a B+ tree database object. */ tcbdbclose(db); return 0; }

 
 
コンパイル
 
 gcc tcbdb.c  -I/usr/local/include/ -L/usr/local/lib/ -ltokyocabinet -lz -lbz2 -lrt -lpthread -lm -lc -O2 -g --static

 
 
実行結果
 
[root@zhoubc queue]# ./a.out 
============== Store value. ================
 key:t_key; 
 value:zhoubaochuan 
 ============== Retrieve a record. ================
Retriver's Value:zhoubaochuan 
 
 
参考文献:
http://fallabs.com/tokyocabinet/