C Programer  - 讨论区

标题:APR Memcache 模块编程示例

2014年01月17日 星期五 09:59

APR的Memcache模块提供了与Memcached服务交互的API,我认为这一组API比原生的libmemcache和libmemcached更容易使用。代码示例如下:

 

#include <stdio.h>
#include <apr.h>
#include <apr_pools.h>
#include <apr_errno.h>
#include <apr_strings.h>
#include <apr_memcache.h>

void apr_err(const char *s, apr_status_t rv)
{
    char buf[120];
    fprintf(stderr, "%s: %s (%d)\n", s, 
            apr_strerror(rv, buf, sizeof buf), rv);
}

int main(int argc,char **argv) {
    apr_initialize();
    apr_pool_t *pool;
    apr_pool_create(&pool,NULL);
    apr_status_t st;
    
    apr_memcache_t *mc; 
    st=apr_memcache_create(pool,1,0,&mc);
    if(st != APR_SUCCESS) {
        apr_err("apr_memcache_create()",st);
        return st;
    }
    apr_memcache_server_t *server;
    apr_memcache_server_create(pool,"localhost",11211,1,3,5,120,&server);
    apr_memcache_add_server(mc,server);

    char *version;
    apr_memcache_version(server,pool,&version);
    printf("version : %s\n",version);
    
    char *key="laomeng";
    char *value="laomeng188@163.com";
    apr_size_t len=strlen(value) + 1;
    
    st=apr_memcache_set(mc,key,value,len,5,0);
    if(st != APR_SUCCESS) {
        apr_err("apr_memcache_set()",st);
        return st;
    }
    char *data=NULL;
    apr_size_t dsize;
    apr_uint16_t flags;

    for(int i=0;i<20;i++) {
        st=apr_memcache_getp(mc,pool,key,&data,&dsize,&flags);
        if(st != APR_SUCCESS) {
            apr_err("apr_memcache_getp()",st);
            break;
        }
        printf("data : %s\n",data);
        apr_sleep(1000000);
    }

    apr_pool_destroy(pool);
    apr_terminate();
    return 0;
}

参考资料:

http://apr.apache.org/docs/apr-util/1.3/group___a_p_r___util___m_c.html

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2024

    京ICP备05028076号