Install from package
> sudo apt-get install memcached
or Install from source code
We need to have :
- libevent downloaded from : http://libevent.org/ 
 
- > ./configure --prefix=/usr
 
- > make
 
- > sudo make install
 
- memcached downloaded from : http://memcached.org/
 
- > ./configure --prefix=/usr/local
 
- > make
 
- > sudo make install
 
Check the status of memcached
 > sudo service memcached status
Install libmemcached C API from source code
- libmemcached C API ownloaded from http://libmemcached.org/libMemcached.html
 
- > ./configure --prefix=/usr
 
- > make 
 
- > sudo make install
 
Give a simple try for libmemcached C API
> gcc -o mem_test2 mem_test2.c -lmemcached -lpthread
> ./mem_test2
Save key:key1 data:"This is c first value" success.
Fetch key:key1 data:This is c first value
Delete Key key1 success.
mem_test2.c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <libmemcached/memcached.h>
int main(int argc, char *argv[]) {
    memcached_st *memc;
    memcached_return rc;
    memcached_server_st *servers;
    char value[8191];
    //connect multi server
    memc = memcached_create(NULL);
    servers = memcached_server_list_append(NULL, "localhost", 11211, &rc);
    servers = memcached_server_list_append(servers, "localhost", 11212, &rc);
    rc = memcached_server_push(memc, servers);
    memcached_server_free(servers);
    //Save multi data
    size_t i;
    char *keys[] = {"key1", "key2", "key3"};
    size_t key_length[] = {4, 4, 4};
    char *values[] = {"This is c first value", "This is c second value", "This is c third value"};
    size_t val_length[] = {21, 22, 21};
    for (i = 0; i < 3; 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]);
        }
    }
    //Fetch multi data
    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, 3);
    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);
        }
    }
    //Delete multi data
    for (i = 0; i < 3; 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 success\n", keys[i], values[i]);
        }
    }
    //free
    memcached_free(memc);
    return 0;
}