C++使用内存库接口示例

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;
}

猜你喜欢

转载自blog.csdn.net/wli_2005/article/details/51659118
今日推荐