zoukankan      html  css  js  c++  java
  • 【转】LoadRunner使用Libmemcached与Memcached通讯

        在一包含业务的大数据量测试过程中,需要使用快速、大容量的数据库。

        可考虑的有关系型数据库或键值缓存数据库,建立集群。 LoadRunner操作Mysql实例:C语言篇已完成。

        今日来尝试在LoadRunner里操作Memcached,使用Libmemcached。

        首先下载源码:‍http://svn.coderepos.org/share/lang/c/libmemcached-win32

          然后按照说明进行编译,源码里还有测试代码和示例代码。编译方法有三种:

            一、使用‍mingw32进行编译,打开‍ Visual Studio Command Prompt:

        ‍    cd libmemcached-latest\libmemcached
        ‍    mingw32-make -f Makefile.w32

        ‍    cd ..\cilents
        ‍    mingw32-make -f Makefile.w32

        ‍    cd ..\..\example
        ‍    mingw32-make -f Makefile.w32

        二、使用Visual Studio 2005或更高版本执行编译:
        ‍    libmemcached-latest\visualc\libmemcached.sln
        三、使用nmake进行编译,‍打开‍ Visual Studio Command Prompt:
        ‍    cd libmemcached-latest\libmemcached
        ‍    nmake -f Makefile.msc

    ‍‍    ‍    cd ..\cilents
        ‍    nmake -f Makefile.msc

        ‍    cd ..\..\example
    ‍‍    ‍    nmake -f Makefile.msc
        编译过程将生成memcached.dll,供LoadRunner扩展调用。如下图:

    源码:

    #define SERVER_NAME "192.168.223.106"
    #define SERVER_PORT 11211
    Action(){ //先加载libmemcached.dll
        int memc;
        int rc;
        int value_length=0;
        intf lags=0;
        int result;
        long int num;
        charkey="name";
        char* value="higkoo";
        chardiscription="Performance";

        memc=memcached_create(NULL);
        rc=memcached_server_add(memc,SERVER_NAME,SERVER_PORT);
        lr_output_message("server add: %s\n",memcached_strerror(memc,rc));

         rc=memcached_set(memc,key,strlen(key),value,strlen(value),0,0);
         lr_output_message("set '%s' to '%s': %s\n",key,value,memcached_strerror(memc,rc));

        result=memcached_get(memc,key,strlen(key),&value_length,&flags,&rc);
        lr_output_message("get '%s': %s\n",key,memcached_strerror(memc,rc));
        lr_output_message("%s = %s\n",key,result);

        rc=memcached_behavior_set(memc,0,1);
        lr_output_message("behavior set to non-block: %s\n",memcached_strerror(memc,rc));

        result=memcached_get(memc,key,strlen(key),&value_length,&flags,&rc);
        lr_output_message("get '%s': %s\n",key,memcached_strerror(memc,rc));
        lr_output_message("%s = %s\n",key,value);

        rc=memcached_set(memc,key,strlen(key),discription,strlen(discription),0,0);
        lr_output_message("set '%s' to '%s': %s\n",key,discription,memcached_strerror(memc,rc));

        rc=memcached_increment(memc,key,strlen(key),1,&num);
        lr_output_message("incr '%s': %s\n",key,memcached_strerror(memc,rc));
        rc=memcached_increment(memc,key,strlen(key),1,&num);
        lr_output_message("incr '%s': %s\n",key,memcached_strerror(memc,rc));
        rc=memcached_increment(memc,key,strlen(key),1,&num);
        lr_output_message("incr '%s': %s\n",key,memcached_strerror(memc,rc));
        rc=memcached_decrement(memc,key,strlen(key),1,&num);
        lr_output_message("decr '%s': %s\n",key,memcached_strerror(memc,rc));

        result=memcached_get(memc,key,strlen(key),&value_length,&flags,&rc);
        lr_output_message("get '%s': %s\n",key,memcached_strerror(memc,rc));
        lr_output_message("test = %s\n",value);

        rc=memcached_delete(memc,key,strlen(key),0);
        lr_output_message("delete '%s': %s\n",key,memcached_strerror(memc,rc));

        result=memcached_get(memc,key,strlen(key),&value_length,&flags,&rc);
        lr_output_message("get(was deleted) '%s': %s\n",key,memcached_strerror(memc,rc));

        memcached_free(memc);
    }

    ...

  • 相关阅读:
    在 ML2 中 enable local network
    实践 Neutron 前的两个准备工作
    配置 linux-bridge mechanism driver
    为 Neutron 准备物理基础设施(II)
    两张图总结 Neutron 架构
    Service Plugin / Agent
    详解 ML2 Core Plugin(I)
    #define用法集锦[修正版]
    socketpair理解
    判断单链表是否存在环,判断两个链表是否相交-的相关讨论
  • 原文地址:https://www.cnblogs.com/mike442144/p/2036841.html
Copyright © 2011-2022 走看看