rocksdb使用,rocksdb

來源:互聯網
上載者:User

rocksdb使用,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<<strInfo<<std::endl;

    }

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


相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.