redis内存库使用示例:
#include <stdio.h>
#include <hiredis/hiredis.h>
int main()
{
redisContext *conn = redisConnect("127.0.0.1",7777);
if(conn != NULL && conn->err)
{
printf("connection error: %s\n",conn->errstr);
return 0;
}
redisReply *reply = (redisReply*)redisCommand(conn,"hset mm a 1234");
printf("set return: %d\n",reply->integer);
freeReplyObject(reply);
reply = (redisReply*)redisCommand(conn,"hset mm b 111");
freeReplyObject(reply);
reply = (redisReply*)redisCommand(conn, "HGETALL mm");
printf("get return: %d\n",reply->elements);
for (int i=0; i<reply->elements; ++i)
{
printf("get return: %s\n",reply->element[i]->str);
}
freeReplyObject(reply);
redisFree(conn);
return 0;
}
memcached内存库使用示例:
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <string>
#include <libmemcached/memcached.h>
using namespace std;
int getServerId(char* key, int serverTotal)
{
int c, hash = 0;
while (c = *key++)
{
hash += c;
}
return hash % serverTotal;
}
int main(int argc, char* argv[])
{
memcached_st *memc;
memcached_return rc;
memcached_server_st *servers;
char value[8191];
memc = memcached_create(NULL);
servers = memcached_server_list_append(NULL, "localhost", 11211, &rc);
servers = memcached_server_list_append(servers, "localhost", 11210, &rc);
servers = memcached_server_list_append(servers, "localhost", 11212, &rc);
servers = memcached_server_list_append(servers, "localhost", 11213, &rc);
rc = memcached_server_push(memc, servers);
int n = memcached_server_list_count(servers);
printf("list_count: %d", n);
memcached_server_free(servers);
size_t i;
char* keys[]={"key1","key2","key3","aa"};
size_t key_length[] = {4,4,4,2};
char *values[] = {"this is 1", "this is 2", "this is 3", "this is 4"};
size_t val_length[] = {9,9,9,9};
for (int i = 0; i < 4; i++)
{
rc = memcached_set(memc, keys[i], key_length[i], values[i], val_length[i], (time_t)180, (uint32_t)0);
if (rc == MEMCACHED_SUCCESS)
{
printf("save key: %s data: %s success\n", keys[i], values[i]);
}
else
{
printf("save key: %s data: %s failed\n", keys[i], values[i]);
}
}
//查看key值所在的服务器id
for (int i = 0; i < 4; i++)
{
int id = getServerId(keys[i],4);
printf("key: %s serverid: %d\n", keys[i], id);
}
char return_key[MEMCACHED_MAX_KEY];
size_t return_key_length;
char *return_value;
size_t return_value_length;
uint32_t flags;
rc = memcached_mget(memc, keys, key_length,4);
while (return_value = memcached_fetch(memc, return_key, &return_key_length, &return_value_length, &flags, &rc))
{
if (rc == (MEMCACHED_SUCCESS))
{
printf("Fetch key: %s data:%s\n", return_key, return_value);
}
}
for (i = 0; i < 4; i++)
{
rc = memcached_set(memc, keys[i], key_length[i], values[i], val_length[i], (time_t)180, (uint32_t)0);
rc = memcached_delete(memc, keys[i], key_length[i], (time_t)0);
if (rc == MEMCACHED_SUCCESS)
{
printf("Delete %s %s success\n", keys[i], values[i]);
}
}
memcached_free(memc);
return 0;
}