高速缓存系统之memcache c++使用实例
生活随笔
收集整理的這篇文章主要介紹了
高速缓存系统之memcache c++使用实例
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
下載源碼編譯,memcached就是生成的主程序,啟動可指定端口,memcached作為server端,依然是我們熟悉的cs模式,使用兩個client一個setkey,一個getkey一百萬個做測試。
./memcached -d -m 300 -p 11211 -u root -c 4096 #include "../libmemcached-1.0.7/libmemcached/memcached.h" #include<iostream> #include<string> #include<time.h> using std::string; using std::cout; using std::endl;class MemCachedClient {public:~MemCachedClient(){memcached_free(memc);};MemCachedClient(){memcached_return rc;memcached_server_st *server = NULL;memc = memcached_create(NULL);server =memcached_server_list_append(server, "127.0.0.1", 11211, &rc);rc=memcached_server_push(memc,server);if (MEMCACHED_SUCCESS != rc){cout <<"memcached_server_push failed! rc: " << rc << endl;}memcached_server_list_free(server);};int Insert(const char* key, const char* value,time_t expiration = 3){if (NULL == key || NULL == value){return -1;}uint32_t flags = 0;memcached_return rc;rc = memcached_set(memc, key, strlen(key),value, strlen(value)+1, expiration, flags);if (MEMCACHED_SUCCESS == rc){return 1;}else{return 0;}};string Get(const char* key){if (NULL == key){return "";}uint32_t flags = 0;memcached_return rc;size_t value_length;char* value = memcached_get(memc, key, strlen(key), &value_length, &flags, &rc);if(rc == MEMCACHED_SUCCESS){return value;}return "";};private:memcached_st* memc; };#include<iostream> using std::cout; using std::endl; #include<time.h> #include<stdlib.h> #include<stdio.h>int main() {MemCachedClient mc;clock_t begin_tick_counts = clock();long object_nums = 1000000;char buff[32];for (int i=0; i<=object_nums; ++i){sprintf(buff, "key-%d",i);mc.Insert(buff,buff, 60);//printf("%s\n", mc.Get(buff).c_str());}clock_t end_tick_counts = clock();printf("set %ld values costs %f ticks\n", object_nums, (double)(end_tick_counts - begin_tick_counts)/CLOCKS_PER_SEC);return 1; }#include "../libmemcached-1.0.7/libmemcached/memcached.h" #include<iostream> #include<string> #include<time.h> using std::string; using std::cout; using std::endl;class MemCachedClient {public:~MemCachedClient(){memcached_free(memc);};MemCachedClient(){memcached_return rc;memcached_server_st *server = NULL;memc = memcached_create(NULL);server =memcached_server_list_append(server, "127.0.0.1", 11211, &rc);rc=memcached_server_push(memc,server);if (MEMCACHED_SUCCESS != rc){cout <<"memcached_server_push failed! rc: " << rc << endl;}memcached_server_list_free(server);};int Insert(const char* key, const char* value,time_t expiration = 3){if (NULL == key || NULL == value){return -1;}uint32_t flags = 0;memcached_return rc;rc = memcached_set(memc, key, strlen(key),value, strlen(value)+1, expiration, flags);if (MEMCACHED_SUCCESS == rc){return 1;}else{return 0;}};string Get(const char* key){if (NULL == key){return "";}uint32_t flags = 0;memcached_return rc;size_t value_length;char* value = memcached_get(memc, key, strlen(key), &value_length, &flags, &rc);if(rc == MEMCACHED_SUCCESS){return value;}return "";};private:memcached_st* memc; };#include<iostream> using std::cout; using std::endl; #include<time.h> #include<stdlib.h> #include<stdio.h>int main() {MemCachedClient mc;clock_t begin_tick_counts = clock();long object_nums = 1000000;char buff[32];for (int i=0; i<=object_nums; ++i){sprintf(buff, "key-%d",i);const char *key = mc.Get(buff).c_str();if(i == object_nums)printf("key:%s\n", key);}clock_t end_tick_counts = clock();printf("get %ld value costs:%f ticks\n", object_nums, (double)(end_tick_counts - begin_tick_counts)/CLOCKS_PER_SEC);return 1; }
TARGET = test_memcached_getkey SOURCE = test_memcached_getkey.cpp CFLAG = -g3 -O0 -Wl,-rpath=./ -lmemcachedTARGET:g++ $(SOURCE) -o $(TARGET) $(CFLAG) test_memcached_setkey:g++ test_memcached_setkey.cpp -o test_memcached_setkey $(CFLAG) .phony:clean clean:rm $(TARGET)rm test_memcached_setkey
《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀
總結
以上是生活随笔為你收集整理的高速缓存系统之memcache c++使用实例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: c++内存管理优化之ptmalloc,t
- 下一篇: Nosql数据库之mongodb c++