程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> DB2數據庫 >> DB2教程 >> rocksdb使用

rocksdb使用

編輯:DB2教程

rocksdb使用


最近項目需要使用個key-value數據存儲,在眾多k-v數據庫中,選擇了rocksdb,原因只有一條,這貨自稱支持范圍查詢。

OK,git下載下來,編譯,這裡說一下,號稱支持C++11所以對編譯器的版本是有要求的,so,你得看看你的編譯器是不是支持C++11.可以編譯so和.a兩種文件類型,這個跟其他的開源庫一個套路,看看說明編譯就行了,如果你發現由於Gtest的一些東西編譯失敗,可以試試編譯動態的。

開始使用,我被API的名字小坑了一下,由於這哥給的文檔有點粗糙,我就沒細看,看到Ishead這種名字,居然反應的是設置他的前一個對象,呵呵,其實這個是判斷他的key是不是以傳入參數為開頭的,對於范圍查詢,這個毛用都沒有。

范圍查詢很簡單,簡單到令我發指,具體使用如下

rocksdb::Iterator* it = db->NewIterator(rocksdb::ReadOptions());

Slice sliceStart("cpu_host:172.28.20.123_serviec:redis_124");

std::string strEnd = "cpu_host:172.28.20.123_serviec:redis_135";

for (it->Seek(sliceStart);

it->Valid() && it->key().ToString() < strEnd;

it->Next()) {

std::string strInfo = it->key().ToString();

std::cout<

}

看懂了不,迭代的前面是找start,是slice類型的比對,後面end卻成了string的比對了,好吧 這才是坑爹的關鍵啊。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved