예제 #1
0
파일: pgredis.c 프로젝트: tutunci/pgredis
/*
 * Helper functions
 */
static void
add_redis_server(const char * host_port) {
	char *tmp = (char *)host_port;
	int ret;

	if (!pgredis) {
		if ((pgredis = (struct pr_server *)palloc(sizeof (struct pr_server))) == NULL)
			return;
		pgredis->server = NULL;
		pgredis->redis_server = NULL;
	}

	/* Currently we dont overwrite the current server or support multiple servers */
	if (pgredis->server)
		return;

	while (*tmp && *tmp != ':')
		tmp++;

	pgredis->server = (char *)palloc(tmp - host_port + 1);
	strncpy(pgredis->server, host_port, (tmp - host_port));
	pgredis->server[(tmp - host_port)] = '\0';

	if (*tmp == ':')
		pgredis->port = atoi(++tmp);
	else
		pgredis->port = PR_DEFAULT_PORT;

	elog(LOG, "pgredis: added server: %s:%i", pgredis->server, pgredis->port);

	ret = redis_connect();
	if (ret == PR_FAIL)
		elog(ERROR, "pgredis: unable to connect to server");
}
예제 #2
0
redis_con* redis_new_connection(struct cachedb_id* id)
{
	redis_con *con;

	if (id == NULL) {
		LM_ERR("null cachedb_id\n");
		return 0;
	}

	if (id->flags & CACHEDB_ID_MULTIPLE_HOSTS) {
		LM_ERR("multiple hosts are not supported for redis\n");
		return 0;
	}

	con = pkg_malloc(sizeof(redis_con));
	if (con == NULL) {
		LM_ERR("no more pkg \n");
		return 0;
	}

	memset(con,0,sizeof(redis_con));
	con->id = id;
	con->ref = 1;

	if (redis_connect(con) < 0) {
		LM_ERR("failed to connect to DB\n");
		pkg_free(con);
		return 0;
	}

	return con;
}
예제 #3
0
int main()
{
  return_code status;
  
  if((status = redis_connect("127.0.0.1", "6379")) == SUCCESS)
    printf("Connected.\n");
  else
  {
    printf("Connection failed.\n");
    return 1;
  }
  
  // Generate key based on timestamp
  time_t now = time(NULL);
  char key[32];
  sprintf(key, "%ld", now);
  printf("Using key=%s\n", key);
  
  int response;
  
  const char *value1 = "abc";
  if(redis_append(key, value1, &response) == SUCCESS)
    printf("Appended=%s: %s\n", value1, response == strlen(value1) ? "OK" : "FAIL");
  
  const char *value2 = "defghji";
  if(redis_append(key, value2, &response) == SUCCESS)
    printf("Appended=%s: %s\n", value2, response == strlen(value1) + strlen(value2) ? "OK" : "FAIL");
    
  return 0;
}
예제 #4
0
파일: redis.c 프로젝트: zakird/zdlibc
int redis_init(void)
{
	rctx = redis_connect();
	if (!rctx) {
		return -1;
	}
	return 0;
}
예제 #5
0
static int init_redis()
{
	char *ip = myconfig_get_value("redis_server");
	if (ip == NULL)
	{
		LOG(vfs_http_log, LOG_ERROR, "config have not redis_server!\n");
		return -1;
	}
    return redis_connect(ip, myconfig_get_intval("redis_port", 16379));
}
예제 #6
0
파일: test.c 프로젝트: shafreeck/scredis
int main(int argc,char *argv[])
{
	redis_client *c = redis_connect("10.210.210.146","8001");
	if(!c || c->fd < 0)die("connect error");
	redis_response *resp = redis_command(c,"set key abc");
	if(resp)
		free_response(resp);
	resp = redis_command(c,"get key");
	if(resp)
	{
		printf("%s\n",resp->data);
	}
	free_response(resp);
	free_client(c);
	return 0;
}
예제 #7
0
int main(int argc,char **argv){
	test_parse("*2\r");
	test_parse("\n$53\r\nfasdfasdffasdfasdfasdfasdfasdfasfasdffasfsdffasdfadfs\r\n$36\r\nfasfsadfasdfsdafasdfasdfasdfsdafsadf\r\n");

	test_parse("$5\r");
	test_parse("\nhello\r");
	test_parse("\n");

	test_parse(":");
	test_parse("10\r");
	test_parse("\n");

	test_parse("");
	test_parse("+ok haha\r");
	test_parse("\n");				

	char  input[65535];
	char *ptr;

	signal(SIGPIPE,SIG_IGN);
	engine *e = engine_new();
	sockaddr_ server;
	easy_sockaddr_ip4(&server,"127.0.0.1",6379);
	redis_client = redis_connect(e,&server,on_disconnect);
	if(!redis_client){
		printf("connect to redis server %s:%u error\n",argv[1],atoi(argv[2]));
		return 0;
	}

	redis_execute(redis_client,"set kenny h\r\nha",cmd_callback,NULL);

	do{
	    ptr = input;	
	    while((*ptr = getchar()) != '\n')
	    	++ptr;
	    *ptr = 0;
	    flag = 1;
	    redis_execute(redis_client,input,cmd_callback,NULL);
	    while(flag && redis_client){
	    	engine_runonce(e,10);
	    };
		if(!redis_client)
			return 0;
	}while(1);
	return 0;
}
예제 #8
0
int main()
{
  return_code status;

  if((status = redis_connect("127.0.0.1", "6379")) == SUCCESS)
    printf("Connected.\n");
  else
  {
    printf("Connection failed.\n");
    return 1;
  }
  
  int response = -1;
  
  if(redis_exists(&response, 2, "testkey", "mykey") == SUCCESS)
    printf("%d keys exists\n", response);
  
  return 0;
}
예제 #9
0
파일: get.c 프로젝트: roku6185/roku_redis
int main()
{
  return_code status;

  if((status = redis_connect("127.0.0.1", "6379")) == SUCCESS)
    printf("Connected.\n");
  else
  {
    printf("Connection failed.\n");
    return 1;
  }
  
  redis_object *response = NULL;
  if(redis_get("testkey", &response) == SUCCESS)
    redis_pretty_print_object(response);
    
  redis_free_object(response);
  return 0;
}
예제 #10
0
int main()
{
  return_code status;

  if((status = redis_connect("127.0.0.1", "6379")) == SUCCESS)
    printf("Connected.\n");
  else
  {
    printf("Connection failed.\n");
    return 1;
  }
  
  int response = -1;
  const char *key = "testkey";
  
  if(redis_expire(&response, key, 120) == SUCCESS)
    printf("Timeout set for %s? %s\n", key, response > 0 ? "YES" : "NO");
  return 0;
}
예제 #11
0
int main(int argc,char **argv){

	if(argc < 2){
		printf("useage redis_streass set/get\n");
		exit(0);
	}

	int i;
	int testset = 0;
	signal(SIGPIPE,SIG_IGN);
	engine *e = engine_new();
	sockaddr_ server;
	easy_sockaddr_ip4(&server,"127.0.0.1",6379);
	redis_conn *redis_client = redis_connect(e,&server,on_disconnect);
	if(!redis_client){
		printf("connect to redis server %s:%u error\n","127.0.0.1",6379);
		return 0;
	}

	if(argc >= 2 && strcmp(argv[1],"set") == 0)
		testset = 1;
	for(i = 0; i < 1000; ++i){		
		char buff[1024];
		if(!testset){
			//snprintf(buff,1024,"hmget chaid:%d chainfo skills",i + 1);
			int tmp = i + 1;
			redis_execute(redis_client,"hmget chaid:1 chainfo skills",cmd_callback,(void*)tmp);
		}else{
			snprintf(buff,1024,"hmset chaid:%d chainfo %s skills %s",
					 i + 1,"fasfsafasfsaf\rasfasfasdfsadfasdfasdfasfdfasdfasfdasdfasdf",
					 "fasdfasfasdfdsafdsafs\nadfsafa\r\nsdfsadfsadfasdfsadfsdafsdafsadfsdf" 
					);
			redis_execute(redis_client,buff,NULL,NULL);
		}
	}
	engine_regtimer(e,1000,timer_callback,NULL);
	last = systick64();
	engine_run(e);

	return 0;
}
예제 #12
0
파일: probes.c 프로젝트: looran/glouglou
int
probes_init(struct glougloud *ggd) {
	_ggd = ggd;
	_probes = xcalloc(1, sizeof(struct glougloud_probes));
	_probes->pid = fork();
	if (_probes->pid > 0)
		return 0;
	setprocname("probes");
	droppriv(GLOUGLOUD_USER_PROBES, 1, NULL);

	_probes->evb = event_base_new();

	if (_modules_load() < 0)
	    goto err;

	_probes->rc = redis_connect(_probes->evb, cb_connect, cb_disconnect);
	if (_probes->rc->err)
		return -1;

	_probes->server = gg_server_start(_probes->evb,
		&ggd->probes.serv_ip, ggd->probes.serv_port,
		prb_handle_conn, prb_handle_packet, NULL);
	if (!_probes->server) {
		log_warn("probes: gg_server_start failed");
		return -1;
	}

	event_base_dispatch(_probes->evb);

	gg_server_stop(_probes->server);

	return 0;

err:
    probes_shutdown();
    return -1;
}
예제 #13
0
파일: hdel.c 프로젝트: roku6185/roku_redis
int main()
{
  return_code status;

  if((status = redis_connect("127.0.0.1", "6379")) == SUCCESS)
    printf("Connected.\n");
  else
  {
    printf("Connection failed.\n");
    return 1;
  }
  
  int response = -1;
  const char *key = "mykey";
  const char *field1 = "myfield1";
  const char *field2 = "myfield2";
  const char *field3 = "myfield3";
  const char *value1 = "my test value 1";
  const char *value2 = "my test value 2";
  const char *value3 = "my test value 3";
  
  if(redis_hset(&response, key, field1, value1) == SUCCESS)
    printf("%s.%s=%s\n", key, field1, value1);
    
  if(redis_hset(&response, key, field2, value2) == SUCCESS)
    printf("%s.%s=%s\n", key, field2, value2);
    
  if(redis_hset(&response, key, field3, value3) == SUCCESS)
    printf("%s.%s=%s\n", key, field3, value3);
    
  if(redis_hdel(&response, key, 1, field1) == SUCCESS)
    printf("%d fields deleted\n", response);
    
  if(redis_hdel(&response, key, 2, field2, field3) == SUCCESS)
    printf("%d fields deleted\n", response);
  return 0;
}
예제 #14
0
int main()
{
  return_code status;

  if((status = redis_connect("127.0.0.1", "6379")) == SUCCESS)
    printf("Connected.\n");
  else
  {
    printf("Connection failed.\n");
    return 1;
  }
  
  int response = -1;
  const char *key = "mykey";
  const char *field = "myfield";
  const char *value = "my test value";
  
  if(redis_hset(&response, key, field, value) == SUCCESS)
    printf("%s.%s=%s\n", key, field, value);
  
  if(redis_hexists(&response, key, field) == SUCCESS)
    printf("Exists %s.%s? %s\n", key, field, response > 0 ? "YES" : "NO");
  return 0;
}