Exemplo n.º 1
0
void *__db_function(void* thread_input){
  
  char * ip = ((thread_struct*)thread_input)->in_ip;
  int port = ((thread_struct*)thread_input)->in_port;
  int my_tid = ((thread_struct*)thread_input)->tid;

  /*
  *each thread has its own value and cluster struct.
  */
  char*  value = (char*)malloc(1024*8); 
  char*  key = (char*)malloc(100);

  clusterInfo *cluster = connectRedis(ip,port);

  if(cluster!=NULL){
      printf("connected to cluster\n");
  }
  else{ 
  	printf("cluster==null\n");
	exit(0);
  }

  int sum = 0;
 
  sprintf(key,"key=%d",my_tid);

  sprintf(value,"%s","aaaaa");

  sum += set(cluster,key,value,1,my_tid);
  sum += get(cluster,key,value,1,my_tid);
  printf("get %s: %s\n",key,value);


  sprintf(value,"%s","ffffff");
  sum += set(cluster,key,value,1,my_tid);
  sum += get(cluster,key,value,1,my_tid);
  printf("get %s:%s\n",key,value);


  sprintf(value,"%s","aefde");
  sum += set(cluster,key,value,1,my_tid);
  sum += get(cluster,key,value,1,my_tid);
  printf("get %s: %s\n",key,value);

  sprintf(value,"%s","abcdefads");
  sum += set(cluster,key,value,1,my_tid);
  sum += get(cluster,key,value,1,my_tid);
  printf("get %s: %s\n",key,value);
  
  if(sum == 0)
     printf("all operations succeed!\n");
  else printf("operation fail\n");

  disconnectDatabase(cluster);

}
Exemplo n.º 2
0
void* __thread_pipeline_test(void *thread_input) {
    char * ip = ((thread_struct*)thread_input)->in_ip;
    int port = ((thread_struct*)thread_input)->in_port;
    int my_tid = ((thread_struct*)thread_input)->tid;
    clusterInfo *cluster = connectRedis("192.168.1.22",6667);

    if(cluster == NULL) {
        printf("unable to connect to cluster\n");
    }else {
        printf("connection succeed\n");
    }

    int step = ((thread_struct*)thread_input)->step;

    //three steps before using a cluster mode pipeline
    clusterPipe *mypipe = get_pipeline();
    set_pipeline_count(mypipe,PIPE_TEST_COUNT);
    bind_pipeline_to_cluster(cluster,mypipe);
    
    
    char key[256],value[256];
    int count = 0;
    int init = (my_tid/step - 1)*step;
    printf("tid=%d start=%d end=%d\n",my_tid,init,my_tid);

    for(int i=init;i<my_tid;i++) {
        sprintf(key,"key=%d",i);
        sprintf(value,"value=%d",i);
	//we have a key and value here, so we can use the pipeline
        count++;
        if(count<PIPE_TEST_COUNT){
            cluster_pipeline_set(cluster,mypipe,key,value);
        }else{
            cluster_pipeline_set(cluster,mypipe,key,value);
            count=0;
            cluster_pipeline_flushBuffer(cluster,mypipe);
            int inner = 0;
            for(;inner<PIPE_TEST_COUNT;inner++) {
                redisReply *reply = cluster_pipeline_getReply(cluster,mypipe);
                if(reply == NULL) {
                    printf("NULL reply in %d\n",i);
                }else{
                    freeReplyObject(reply);
                }
            }
            cluster_pipeline_complete(cluster,mypipe);
            reset_pipeline_count(mypipe,PIPE_TEST_COUNT);
        }        
    }
    disconnectDatabase(cluster);    
    return (void*)0;
}
Exemplo n.º 3
0
/***************************************************
Description:    启动TCPServer
Input:          无
Output:         无
Return:         无
***************************************************/
void TCPServer::start()
{
    //初始化各线程
    server_.setThreadInitCallback(bind(&TCPServer::threadInit, this, _1));
    server_.start(); //start以后就利用各个注册的回调函数工作

    jsonMessageServer_.start();

    connectRedis();
    //rpcClient_.connect(); //TODO:RPCClient

//    Http::post(config_.smsAddress_, config_.smsPort_, config_.smsPage, "msg=TCPServer模块启动 【】");
}
Exemplo n.º 4
0
void disconnect_after_connect(){
    init_global();
    clusterInfo *cluster = connectRedis("127.0.0.1",6667);
    if(cluster != NULL) {
        printf("connected to cluster\n");
    }else{
        printf("panic\n");
    }
    char key[10] = "key";
    char value[10] = "value";
    
    set(cluster,key,value,1,1);
    get(cluster,key,value,1,1);
    printf("get value= %s\n",value);
    
    disconnectDatabase(cluster);
    release_global();
}
Exemplo n.º 5
0
int main(int argc, char **argv)
{
	int			i, maxnconn;
	pthread_t	tid;
	struct file	*fptr;
	int current;
	listNode *listNode;

	for (i = 0; i < MAXFILES; i++) {
		file[i].f_flags = 0;
	}
	context = connectRedis(localhost,port);
	queue = listCreate();
	home_page(HOST, "/");

	nlefttoread = nlefttoconn = queue->len;
	nconn = 0;
	
	while (nlefttoconn > 0 || nconn > 0) {
		printf("lefttoconn: %d, conn:%d\n",nlefttoconn,nconn);
		current = 0;
		while (nconn < MAXFILES && nlefttoconn > 0) {
			for (i = current ; i < MAXFILES; i++)
				if (file[i].f_flags == 0)
				{
					current = i;
					break;
				}

			pthread_mutex_lock(&queue_mutex);
			listNode = queue->head;
			if (listNode == NULL)
			{
				printf("have some but no!\n");
				exit(1);
			}
			file[i].f_flags = F_CONNECTING;
			setFileNameAndHost(listNode->value,file[i].f_name,file[i].f_host);
			listDelNodeHead(queue);
			pthread_create(&tid, NULL, &do_get_read, &file[i]);
			file[i].f_tid = tid;
			nconn++;
			nlefttoconn = queue->len;
			pthread_mutex_unlock(&queue_mutex);
		}

		pthread_mutex_lock(&ndone_mutex);
		while (ndone == 0)
			pthread_cond_wait(&ndone_cond, &ndone_mutex);

		for (i = 0; i < MAXFILES; i++) {
			if (file[i].f_flags & F_DONE) {
				pthread_join(file[i].f_tid, (void **) &fptr);

				if (&file[i] != fptr)
				{
					printf("file[i]!=ptr\n");
					exit(1);
				}
				fptr->f_flags = 0;	/* clears F_DONE */
				ndone--;
				nconn--;
				printf("thread %d for name:%s host:%s done\n", fptr->f_tid, fptr->f_name,fptr->f_host);
			}
		}
		pthread_mutex_unlock(&ndone_mutex);
	}

	listRelease(queue);
	disconnectRedis(context);
	exit(0);
}
Exemplo n.º 6
0
int main(){
   clusterInfo *cluster = connectRedis("192.168.1.22",6667);
    if(cluster == NULL) {
        printf("unable to connect to cluster\n");
    }else{
        printf("connection succeed\n");
    }
    
    clusterPipe* mypipe = get_pipeline();
    set_pipeline_count(mypipe,20);

    bind_pipeline_to_cluster(cluster,mypipe);
    
    cluster_pipeline_get(cluster,mypipe,"k1");   
    cluster_pipeline_get(cluster,mypipe,"k2"); 
    cluster_pipeline_get(cluster,mypipe,"k3");
    cluster_pipeline_get(cluster,mypipe,"k4");   
    cluster_pipeline_get(cluster,mypipe,"k5"); 
    cluster_pipeline_get(cluster,mypipe,"k6");
    cluster_pipeline_get(cluster,mypipe,"k7");   
    cluster_pipeline_get(cluster,mypipe,"k8"); 
    cluster_pipeline_get(cluster,mypipe,"k9");
    cluster_pipeline_get(cluster,mypipe,"k10");   
    cluster_pipeline_get(cluster,mypipe,"k11"); 
    cluster_pipeline_get(cluster,mypipe,"k12");
    cluster_pipeline_get(cluster,mypipe,"k13");   
    cluster_pipeline_get(cluster,mypipe,"k14"); 
    cluster_pipeline_get(cluster,mypipe,"k15");
    cluster_pipeline_get(cluster,mypipe,"k16");   
    cluster_pipeline_get(cluster,mypipe,"k17"); 
    cluster_pipeline_get(cluster,mypipe,"k18");
    cluster_pipeline_get(cluster,mypipe,"k19");   
    cluster_pipeline_get(cluster,mypipe,"k20");
    
    cluster_pipeline_flushBuffer(cluster,mypipe);

    int i;

    for (i=0;i<20;i++) {
        redisReply* reply =  cluster_pipeline_getReply(cluster,mypipe);
        if(reply == NULL) {
            printf("NULL reply\n");
            continue;
        }
        printf("%s\n",reply->str);
        freeReplyObject(reply);
    }

    cluster_pipeline_complete(cluster,mypipe);

    printf("set a new pipeline hahahaha .......\n"); 

    set_pipeline_count(mypipe,10);
       
    cluster_pipeline_get(cluster,mypipe,"k11"); 
    cluster_pipeline_get(cluster,mypipe,"k12");
    cluster_pipeline_get(cluster,mypipe,"k13");   
    cluster_pipeline_get(cluster,mypipe,"k14"); 
    cluster_pipeline_get(cluster,mypipe,"k15");
    cluster_pipeline_get(cluster,mypipe,"k16");   
    cluster_pipeline_get(cluster,mypipe,"k17"); 
    cluster_pipeline_get(cluster,mypipe,"k18");
    cluster_pipeline_get(cluster,mypipe,"k19");   
    cluster_pipeline_get(cluster,mypipe,"k20");

    cluster_pipeline_flushBuffer(cluster,mypipe);
    for (i=0;i<10;i++) {
        redisReply* reply =  cluster_pipeline_getReply(cluster,mypipe);
        if(reply == NULL) {
            printf("NULL reply\n");
            continue;
        }
        printf("%s\n",reply->str);
        freeReplyObject(reply);
    }

    cluster_pipeline_complete(cluster,mypipe);
    disconnectDatabase(cluster); 
    return 0;
}