Aerospike C用戶端手冊———鍵-值儲存—讀取記錄,aerospike用戶端

來源:互聯網
上載者:User

Aerospike C用戶端手冊———鍵-值儲存—讀取記錄,aerospike用戶端
讀取記錄

Aerospike C 用戶端AP提供四個從資料庫讀取一條記錄的操作:

  • aerospike_key_get() — 讀取一條記錄所有bin資料。
  • aerospike_key_select() — 讀取一條記錄指定bin資料。
  • aerospike_key_exists() — 檢查一條記錄的存在性。
  • aerospike_key_operate() — 在一條記錄上執行操作,包括對指定bin的讀取操作。

此章節主要討論前三個操作,aerospike_key_operate()操作將在後面的【記錄進階操作】章節中討論。

後面的代碼引用自樣本目錄【examples/basic_examples/get】,由Aerospike C用戶端安裝包內建。

請先閱讀【建立串連】章節內容,理解如何建立與叢集的串連。

初始化鍵(KEY)

讀取記錄時,資料庫需要通過鍵(key)來標識這條記錄。下面我們為樣本建立一個鍵。用來做鍵的是字串”test-key",資料所在的namespace名稱為“test”、set名稱為“test-set”。其它資料類型也可用作鍵,比如:整型(integer)或二進位大對象塊(blob)。

as_key key;as_key_init_str(&key, "test", "test-set", "test-key");
讀取一條記錄所有bin資料

使用aerospike_key_get()操作,讀取一條記錄所有bin資料。此操作儘可能多地以bin資料填充參數中的記錄對象。記錄對象(第1行)初始化為空白指標(NULL)。當記錄對象為空白指標時,允許讀取操作在堆上為記錄分配足夠多的bin對象空間,以容納從資料庫返回的所有bin資料。

as_record* p_rec = NULL;if (aerospike_key_get(&as, &err, NULL, &key, &p_rec) != AEROSPIKE_OK) {    fprintf(stderr, "err(%d) %s at [%s:%d]\n", err.code, err.message, err.file, err.line);}as_record_destroy(rec);

當不再需要一條記錄對象時,一定要通過as_record_destroy()操作釋放所佔用資源。

讀取一條記錄指定bin資料

若精確地知道需從資料庫中讀取的bin名稱,那麼最好在讀取時指定這些bin,而不是擷取整條記錄。為了指定需從伺服器取回的bin,首先要建立一個以null 指標(NULL)結束的字串(string)數組,其中每個字串是一個bin名稱;然後調用aerospike_key_select()操作讀取資料。

下面的代碼示意用包含兩個bin名稱的字串數組,從資料庫中讀取名稱為”test-bin-1“和”test-bin-3“的bin資料。數組以null 指標(NULL)結束,告訴讀取操作後面不再有下一個bin名稱。

as_record* p_rec = NULL;static const char* bins_1_3[] = { "test-bin-1", "test-bin-3", NULL };if (aerospike_key_select(&as, &err, NULL, &key, bins_1_3, &p_rec) != AEROSPIKE_OK) {    fprintf(stderr, "err(%d) %s at [%s:%d]\n", err.code, err.message, err.file, err.line);}as_record_destroy(rec);

當不再需要一條記錄對象時,一定要通過as_record_destroy()操作釋放所佔用資源。

遍曆記錄的bin

請參見最佳實務章節中【遍曆記錄的bin】。

檢查記錄的存在性

經常十分簡單地需要知道一個記錄是否存在於資料庫中。aerospike_key_exists()操作用記錄的中繼資料填充參數中的記錄對象,比如:分代(generation)編號、存留時間,可用來檢查記錄是否存在。

as_record* p_rec = NULL;if (aerospike_key_exists(&as, &err, NULL, &key, &p_rec) == AEROSPIKE_ERR_RECORD_NOT_FOUND) {    fprintf(stderr, "record not found");}
讀取事務逾時控制

應用需要在預定時間內響應調用者的情況下,可設定讀取調用時的事務逾時時間,修改write_policy.timeout為相應的毫秒數。


原文連結: http://www.aerospike.com/docs/client/c/usage/kvs/read.html譯       者: 歪脖大肚子Q  

相關文章

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.