memcache
在一包含业务的大数据量测试过程中,需要使用快速、大容量的数据库。 可考虑的有关系型数据库或键值缓存数据库,建立集群。 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; char* key="name"; char* value="higkoo"; char* discription="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); } ... |