AerospikeC¿Í»§¶ËÊÖ²á¨D¨D¨D¼ü-Öµ´æ´¢¨DÅúÁ¿¶ÁÈ¡¼Ç¼

2015-07-24 08:32:27 ¡¤ ×÷Õß: ¡¤ ä¯ÀÀ: 1

ÅúÁ¿¶ÁÈ¡¼Ç¼

³ýÁËÿ´Î¶ÁÈ¡µ¥Ìõ¼Ç¼Í⣬»¹¿ÉÒÔÔÚÒ»¸öÊÂÎñÖдӼ¯ÈºÖжÁÈ¡¶àÌõ¼Ç¼¡£Ïà¹ØµÄ¿Í»§Aerospike C¿Í»§¶ËAPIµ÷ÓÃÊÇ£º


aerospike_batch_get() ¡ª ·µ»ØËùÐè¼Ç¼ËùÓÐbinÊý¾Ý¡£
aerospike_batch_exists() ¡ª ·µ»ØËùÐè¼Ç¼ԪÊý¾Ý(Éú´æÊ±¼ä, ·Ö´ú±àºÅ)¡£

?

ºóÃæµÄ´úÂëÒýÓÃ×ÔʾÀýĿ¼¡¾examples/basic_examples/get¡¿£¬ÓÉAerospike C¿Í»§¶Ë°²×°°ü×Ô´ø¡£

ÇëÏÈÔĶÁ¡¾´´½¨Á¬½Ó¡¿Õ½ÚÄÚÈÝ£¬Àí½âÈçºÎ½¨Á¢Ó뼯ȺµÄÁ¬½Ó¡£

³õʼ»¯ÅúÁ¿ÇëÇó

ÔÚÖ´ÐÐÅúÁ¿µ÷ÓÃǰ£¬Ê×Ïȳõʼ»¯Ò»¸öas_batch¶ÔÏó¡£ÏÂÃæµÄʾÀý´úÂ룬³õʼ»¯ÁËÒ»¸öÒª¶ÁÈ¡1000Ìõ¼Ç¼µÄas_batch¶ÔÏó¡£

as_batch batch;
as_batch_inita(&batch, 1000);

³õʼ»¯Ðè¶ÁÈ¡¼Ç¼µÄ¼ü

Ò»µ©as_batch¶ÔÏó³õʼ»¯¹ý£¬Ó¦ÉèÖÃÐèÒª¶ÁÈ¡¼Ç¼Ãǵļü£º

for (uint32_t i = 0; i < 1000; i++) { as_key_init_int64(as_batch_keyat(&batch, i), "test", "demoset", (int64_t)i); }

ÉÏÃæµÄµ÷Óã¬Ê¹ÓÃas_batch_keyat()º¯ÊýÉèÖÃÁË1000¸ö¼ü¡£ÔÚÕâÀ¼üµÄÊý¾ÝÀàÐÍÊÇÕûÐÍ£¨integer£©£¬·¶Î§´Ó0µ½1000¡£Ò²¿ÉÒÔʹÓò»Í¬Êý¾ÝÀàÐ͵ļü£¬±ÈÈ磺×Ö·û´®£¨string)¡£ÕâЩ¼üÓÃÓÚ¶ÁÈ¡¼Ç¼µÄ´æ´¢Î»ÖãºnamespaceÃû³ÆÎª"test"¡¢setÃû³ÆÎª¡°test-set¡±¡£

ÅúÁ¿¶ÁÈ¡¼Ç¼µÄ¼ü±ØÐëÊôÓÚͬһ¸önamespace¡£

´ÓÊý¾Ý¿âÖжÁÈ¡¼Ç¼

ÏÖÔÚÒѾ­×¼±¸ºÃÖ´ÐжÁÈ¡¼Ç¼µÄµ÷Óá£

if (aerospike_batch_get(&as, &err, NULL, &batch, batch_read_cb, NULL) != AEROSPIKE_OK) { LOG("aerospike_batch_get() returned %d - %s", err.code, err.message); cleanup(&as); exit(-1); }

ÔÚAerospike C¿Í»§¶ËÄÚ²¿£¬´Ëµ÷Óð´×î¼Ñ´¦ÀíÇëÇóµÄ·þÎñÆ÷½ÚµãÀ´·Ö×é¼Ç¼¼ü£¬²¢Îª¼¯ÈºÖÐÕâЩ½Úµãÿ¸öÆô¶¯Ò»¸öÅúÁ¿ÈÎÎñ¡£ÓÐ6¸ö£¨NUM_BATCH_THREADS£©ÅúÁ¿¹¤×÷Ï̴߳¦ÀíËùÓнڵãÉϵÄÈ«²¿ÅúÁ¿ÈÎÎñ¡£Èô¼¯ÈºÖÐÓжàÓÚ6¸ö½Úµã£¬ÀíÏë״̬ÏÂÊÇÔö¼ÓĬÈÏÏß³ÌÊýÒÔÈÃÈ«²¿½Úµã²¢Ðд¦Àí¡£

´¦Àí½á¹û¼¯

ÉÏÃæµÄaerospike_batch_get£¨£©º¯ÊýʾÀýʹÓûص÷º¯Êýbatch_read_cb×öΪ²ÎÊý¡£»Øµ÷º¯Êý¾ßÓÐÈçÏÂÐ͹¹£º

bool (* aerospike_batch_read_callback)(const as_batch_read * results, uint32_t n, void * udata);

´Ë»Øµ÷º¯Êý½«ÔÚËùÓнڵ㷵»ØÈ«²¿¼Ç¼ºó±»µ÷Ó㬰´ÕռǼ¼ü±»µÝ½»µÄ˳Ðò¡£

Ó¦ÓÿɱéÀúas_batch_readµÄ½á¹ûÁÐ±í²¢´¦Àíÿһ¸ö¼Ç¼¡£½á¹û¼Ç¼¼°ÊýÖµÖ»¿É¼ûÓڻص÷º¯Êý×÷ÓÃÓò£¬ÈôÐèÒª´«µÝ³ö»Øµ÷º¯Êý×÷ÓÃÓòÒÔÍ⣬±ØÐëÏÔʽµØ¿½±´¡£

bool batch_read_cb(const as_batch_read* results, uint32_t n, void* udata) { uint32_t n_found = 0; for (uint32_t i = 0; i < n; i++) { LOG("index %u, key %" PRId64 ":", i, as_integer_getorelse((as_integer*)results[i].key->valuep, -1)); if (results[i].result == AEROSPIKE_OK) { LOG(" AEROSPIKE_OK"); n_found++; } else if (results[i].result == AEROSPIKE_ERR_RECORD_NOT_FOUND) { // The transaction succeeded but the record doesn't exist. LOG(" AEROSPIKE_ERR_RECORD_NOT_FOUND"); } else { // The transaction didn't succeed. LOG(" error %d", results[i].result); } } return true; }

ÈôÏëÔÚÿ´Î»Øµ÷´«µÝÒ»¸öÈ«¾Ö¶ÔÏó³öÀ´£¬ÇëÔÚµ÷ÓÃaerospike_batch_get()ʱÌṩһ¸öuserdataÀàÐ͵IJÎÊý¡£

¶ÁÈ¡¼Ç¼ԪÊý¾Ý

×öΪ¶ÁÈ¡ÕûÌõ¼Ç¼Êý¾ÝµÄÌæ´ú£¬¿ÉÒÔʹÓÃÒ»¸öµÈ¼Ûµ÷Ó㬵«Ö»·µ»Ø¼Ç¼µÄÔªÊý¾Ý£¨±ÈÈ磺Éú´æÊ±¼ä¡¢·Ö´ú±àºÅ£©¡£Ó¦ÓÃÖ»ÏëÕÒ³ö¼Ç¼ÊÇ·ñ´æÔÚ¶ø²»Ïë³Ðµ£Êµ¼Ê¶ÁÈ¡Êý¾Ý³É±¾Ê±£¬¿ÉÓÅÏÈʹÓô˵÷Óá£

if (aerospike_batch_exists(&as, &err, NULL, &batch, batch_read_cb, NULL) != AEROSPIKE_OK) { LOG("aerospike_batch_exists() returned %d - %s", err.code, err.message); cleanup(&as); exit(-1); }

ÇåÀí×ÊÔ´

Èô¼Ç¼¼üÊÇ´Ó¶ÑÉÏ·ÖÅ䣬ӦÔÚʹÓúóÇåÀíÊÍ·Å¡£