Пример #1
0
static double get_balance(const char *billaccount, switch_channel_t *channel)
{
	REDIS redis;
	char *rediskey;
	char *str;
	double val;
	int result;

	double balance = 0.0;

	if (redis_factory(&redis) != SWITCH_STATUS_SUCCESS) {
		return SWITCH_STATUS_FALSE;
	}

       	rediskey = switch_mprintf("rn_%s", billaccount);

	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Looking up redis key %s\n", rediskey);

	result = credis_get(redis, rediskey, &str);

	if (result != 0) {
		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "ERR: Could not get redis value on key %s (got result %d) - returning positive value for now (FIXME)\n", rediskey, result);
		balance = 1.0;
	} else {
		val = atof(str);
		balance = val/1000000;
		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Key %s returned %s converted to %e / %f \n", rediskey, str, val, balance);
	}

	switch_safe_free(rediskey);
	credis_close(redis);

	return balance;
}
Пример #2
0
static void redis_drv_get(redis_drv_t *redis_drv, Reader *const reader)
{
  int rc;
  char *val;
  
  REDIS redis = redis_drv->redis;
  
  const uint64_t *keysize = NULL;
  const char *key = NULL;
  
  if(read_binary(reader, &key, &keysize)){
    rc = credis_get(redis, key, &val);
    if(rc > -1){
      ErlDrvTermData spec[] = {
        ERL_DRV_BINARY, 
        (ErlDrvTermData) val,
        strlen(val), 
        0
      };
      driver_output_term(redis_drv->port, spec, sizeof(spec) / sizeof(spec[0]));
    } else{
      return_error(redis_drv, REDIS_DRV_NIL);
    }
  } else{
    return_error(redis_drv, REDIS_DRV_ERROR);
  }
}
Пример #3
0
Datum
pr_get(PG_FUNCTION_ARGS) {
	text * key_arg = PG_GETARG_TEXT_P(0);
	char * key = NULL;
	char * value = NULL;
	text * ret_val = NULL;
	int ret = 0;

	if (!pgredis || !pgredis->redis_server) {
		elog(ERROR, "Redis instance missing, unable to get");
		PG_RETURN_NULL();
	}

	if (!key_arg)
		PG_RETURN_NULL();
	
	key = DatumGetCString(DirectFunctionCall1(textout, PointerGetDatum(key_arg)));
	if (!key || strlen(key) == 0)
		PG_RETURN_NULL();

	ret = credis_get(pgredis->redis_server, key, &value);
	if (ret == CREDIS_OK) {
		ret_val = (text *)palloc(strlen(value) + VARHDRSZ);
		SET_VARSIZE(ret_val, strlen(value) + VARHDRSZ);
		memcpy(VARDATA(ret_val), value, strlen(value));
 		PG_RETURN_TEXT_P(ret_val);
	}

	PG_RETURN_NULL();
}
Пример #4
0
int ZRedis::app_sleep()
{
    char *val = NULL;
    credis_get(m_pRedis, "SLEEP", &val);
    if(val != NULL)
       return atoi(val);       
    else 
       return 0;
}
Пример #5
0
int ZRedis::app_run()
{
    char *val = NULL;
    credis_get(m_pRedis, "RUN", &val);
    if(val != NULL)
            return atoi(val);       
    else 
            return 0;
}
Пример #6
0
int ZRedis::app_displaybig()
{
    char *val = NULL;
    int i = 0;
    credis_get(m_pRedis, "DISPLAYBIG", &val);
    if(val != NULL)
            i = atoi(val);  
        
    return i;
}
Пример #7
0
//return value: -1: failed
int ZRedis::app_get(const char *key, PLAT_UINT8* outbuf)
{
    char *val = NULL;
        
    int ret = -1;
    ret = credis_get(m_pRedis,key,&val);
    if(val != NULL)
    {
        strcpy(m_charBuf,val);
        db2app(m_charBuf,outbuf);
    }
    return ret;
}
Пример #8
0
//-----------------------------------------------------------------------------
int CRedisClient::get(const std::string key, std::string& value)
{
  int ret;
  char* val;

  if (mRedisCon) {
    ret = credis_get( mRedisCon, key.c_str(), &val );
    if (ret == 0) {
      value = val;
      return 1; // succes
    }
  }
  return 0; // failure
}
Пример #9
0
/**
 * TODO - parameter polymorphism:
 *          when message is a list, first item is the key
 *          when message is a string then message is the key
 */
const string* db_get(closure* c, db* self, const fexp* message)
{
  object* reply = (object*)fexp_nil;
  string* key   = (string*)send(message, s_fexp_join, self->delimiter); 
  char*   keyc  = (char*)send(key, s_string_tochar); 
  char*   val;
  int rc = credis_get(self->handle, keyc, &val);
  wprintl(L"GET /db/get/%S -> %d %s\n", key->buffer, rc, val);
  if (rc == -1) {                       // key does not exist
    reply = (object*)fexp_nil;
  } else if (rc != 0 || val == NULL) {  // error
    reply = send(VillageBus, s_villagebus_error, L"get failed %s", keyc);
  } else {                              // success
    reply = send(String, s_string_fromchar, val, strlen(val));
  }
  free(keyc);
  return (string*)reply;
}
Пример #10
0
int main(int argc, char **argv) {
  REDIS redis;
  REDIS_INFO info;
  char *val, **valv;
  const char *keyv[] = {"kalle", "adam", "unknown", "bertil", "none"};
  int rc, keyc=5, i;


  redis = credis_connect(NULL, 0, 10000);
  if (redis == NULL) {
    printf("Error connecting to Redis server. Please start server to run tests.\n");
    exit(1);
  }

  printf("\n\n************* misc info ************************************ \n");

  rc = credis_info(redis, &info);
  printf("info returned %d\n", rc);
  printf("> redis_version: %s\n", info.redis_version);
  printf("> arch_bits: %d\n", info.arch_bits);
  printf("> multiplexing_api: %s\n", info.multiplexing_api);
  printf("> process_id: %ld\n", info.process_id);
  printf("> uptime_in_seconds: %ld\n", info.uptime_in_seconds);
  printf("> uptime_in_days: %ld\n", info.uptime_in_days);
  printf("> connected_clients: %d\n", info.connected_clients);
  printf("> connected_slaves: %d\n", info.connected_slaves);
  printf("> blocked_clients: %d\n", info.blocked_clients);
  printf("> used_memory: %zu\n", (size_t)info.used_memory);
  printf("> used_memory_human: %s\n", info.used_memory_human);
  printf("> changes_since_last_save: %lld\n", info.changes_since_last_save);
  printf("> bgsave_in_progress: %d\n", info.bgsave_in_progress);
  printf("> last_save_time: %ld\n", info.last_save_time);
  printf("> bgrewriteaof_in_progress: %d\n", info.bgrewriteaof_in_progress);
  printf("> total_connections_received: %lld\n", info.total_connections_received);
  printf("> total_commands_processed: %lld\n", info.total_commands_processed);
  printf("> expired_keys: %lld\n", info.expired_keys);
  printf("> hash_max_zipmap_entries: %zu\n", (size_t)info.hash_max_zipmap_entries);
  printf("> hash_max_zipmap_value: %zu\n", (size_t)info.hash_max_zipmap_value);
  printf("> pubsub_channels: %ld\n", info.pubsub_channels);
  printf("> pubsub_patterns: %u\n", info.pubsub_patterns);
  printf("> vm_enabled: %d\n", info.vm_enabled);
  printf("> role: %d\n", info.role);

  printf("\n\n************* get/set ************************************ \n");

  rc = credis_set(redis, "kalle", "kula");
  printf("set kalle=kula returned: %d\n", rc);

  rc = credis_get(redis, "kalle", &val);
  printf("get kalle returned: %s\n", val);

  rc = credis_type(redis, "someunknownkey");
  printf("get type unknown key returned: %d\n", rc);

  rc = credis_type(redis, "kalle");
  printf("get type known key returned: %d\n", rc);

  rc = credis_getset(redis, "kalle", "buhu", &val);
  printf("get set kalle=buhu returned: %s\n", val);

  rc = credis_get(redis, "kalle", &val);
  printf("get kalle returned: %s\n", val);

  rc = credis_del(redis, "kalle");
  printf("del kalle returned: %d\n", rc);

  rc = credis_get(redis, "kalle", &val);
  printf("get kalle returned: %s\n", val);

  rc = credis_set(redis, "adam", "aaa");
  rc = credis_set(redis, "bertil", "bbbbbbb");
  rc = credis_set(redis, "caesar", "cccc");
  rc = credis_get(redis, "adam", &val);
  printf("get adam returned: %s\n", val);
  rc = credis_get(redis, "bertil", &val);
  printf("get bertil returned: %s\n", val);
  rc = credis_get(redis, "caesar", &val);
  printf("get caesar returned: %s\n", val);

  rc = credis_mget(redis, keyc, keyv, &valv);
  printf("mget returned: %d\n", rc);
  for (i = 0; i < rc; i++)
    printf(" % 2d: %s\n", i, valv[i]);
     
  credis_close(redis);

  return 0;
}