int main(int argc, const char *argv[]) { struct timeval start, end; double elapsed; dict *d; struct bftree *tree; const int times = 500; struct bftree_opts opt = { NULL, NULL, bftreeSdsKeyCompare, (void (*)(void*))sdsfree, (void (*)(void*))sdsfree }; tree = bftree_create(&opt); d = dictCreate(&sdsdict_type, NULL); gettimeofday(&start, NULL); redis_add(d, times); gettimeofday(&end, NULL); elapsed = get_seconds(start, end); printf("redis add %d elements seconds: %f\n", times, elapsed); gettimeofday(&start, NULL); tree = bftree_add(tree, times); gettimeofday(&end, NULL); elapsed = get_seconds(start, end); printf("bftree add %d elements seconds: %f\n", times, elapsed); gettimeofday(&start, NULL); redis_fetch(d, times); gettimeofday(&end, NULL); elapsed = get_seconds(start, end); printf("redis get %d elements seconds: %f\n", times, elapsed); gettimeofday(&start, NULL); bftree_fetch(tree, times); gettimeofday(&end, NULL); elapsed = get_seconds(start, end); printf("bftree get %d elements seconds: %f\n", times, elapsed); gettimeofday(&start, NULL); redis_del(d, times); gettimeofday(&end, NULL); elapsed = get_seconds(start, end); printf("redis delete %d elements seconds: %f\n", times, elapsed); gettimeofday(&start, NULL); bftree_delele(tree, times); gettimeofday(&end, NULL); elapsed = get_seconds(start, end); printf("bftree delete %d elements seconds: %f\n", times, elapsed); bftree_free(tree); dictRelease(d); return 0; }
void aggregator_save_feed( map <string, string> &edit ) { if(DB_TYPE==1) { if (isset(edit["fid"]) && isset(edit["title"])) { redis_command("HMSET aggregator_feed:%d title %s url %s refresh %d", intval(edit["fid"]), edit["title"].c_str(), edit["url"].c_str(), intval(edit["refresh"]) ); } else if (isset( edit["fid"] )) { string iid; redis_command("DEL aggregator_feed:%d", intval(edit["fid"]) ); REDIS_RES * result = redis_query("SMEMBERS aggregator_item:fid:%d", intval(edit["fid"]) ); while( redis_fetch( result, iid ) ) { redis_command("DEL aggregator_item:%d", intval(iid) ); redis_command("SREM aggregator_item %d", intval(iid) ); } redis_command("DEL aggregator_item:fid:%d", intval(edit["fid"]) ); } else if ( isset(edit["title"]) ) { edit["fid"] = redis_str("INCR aggregator_feed:ids"); redis_command("SADD aggregator_feed %d", intval(edit["fid"]) ); redis_command("HMSET aggregator_feed:%d title %s url %s refresh %d block %d", intval(edit["fid"]), edit["title"].c_str(), edit["url"].c_str(), intval(edit["refresh"]), 5 ); } } if(DB_TYPE==2) { if (isset(edit["fid"]) && isset(edit["title"])) { db_querya("UPDATE aggregator_feed SET title = '%s', url = '%s', refresh = %d WHERE fid = %d", edit["title"].c_str(), edit["url"].c_str(), edit["refresh"].c_str(), edit["fid"].c_str() ); } else if (isset( edit["fid"] )) { db_querya("DELETE FROM aggregator_feed WHERE fid = %d", edit["fid"].c_str() ); db_querya("DELETE FROM aggregator_item WHERE fid = %d", edit["fid"].c_str() ); } else if ( isset(edit["title"]) ) { db_querya("INSERT INTO aggregator_feed (title, url, refresh, block, description, image) VALUES ('%s', '%s', %d, 5, '', '')", edit["title"].c_str(), edit["url"].c_str(), edit["refresh"].c_str() ); edit["fid"] = db_last_insert_id(); } } }
void aggregator_remove( map <string, string> feed ) { if(DB_TYPE==1) { string iid; REDIS_RES * result = redis_query("SMEMBERS aggregator_item:fid:%d", intval(feed["fid"]) ); while( redis_fetch( result, iid ) ) { redis_command("DEL aggregator_item:%d", intval(iid) ); redis_command("SREM aggregator_item %d", intval(iid) ); } redis_command("DEL aggregator_item:fid:%d", intval(feed["fid"]) ); redis_command("HMSET aggregator_feed:%d checked %d etag %s modified %d", intval(feed["fid"]), 0, "", 0 ); } if(DB_TYPE==2) { db_querya("DELETE FROM aggregator_item WHERE fid = %d", feed["fid"].c_str() ); db_querya("UPDATE aggregator_feed SET checked = 0, etag = '', modified = 0 WHERE fid = %d", feed["fid"].c_str() ); } set_page_message("The news items from "+feed["title"]+" have been removed."); }