Пример #1
0
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;
}
Пример #2
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();
		}
	}	
}
Пример #3
0
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.");
}