libmemcached is a memcached library, client library, client library implemented in C and C++ languages. It has low memory usage, thread safety, and provides comprehensive support for memcached functions. It also uses a variety of command line tools: memcat, memflush, memrm, memstat, and memslap (load generation). The library has been designed to allow different hashing methods for keys, split keys, and use unified hash distribution
The php memcache client based on libmemcached has many advantages
•hash consistent storage
•multi get/set
•Automatically hash the key to int, avoiding the limitation that the memcache key string is less than 255Byte by default
I haven’t configured a server for a long time. I always thought that libmemcached’s php memcached has been included in the basic installation package. In the end, I still need to compile it myself. There are many hidden pits in the entire installation process, and it took several attempts before I succeeded
Installation is divided into two steps
•Install libmemcached, targeting so and header files
•Install memcachedphp extensions
libmemcaced is divided into two major versions, 0.x and 1.x. The 1.x version started from 2011-09-28. Compilation is very troublesome and requires special configuration of gcc4.0 or above. Compile is extremely slow. The 0.x version is simple. There are many, the highest version is 0.53, so choose to install 0.53
The best products always appear in pairs. PHP’s memcahed also starts from 2.1.0, requiring libmemcached to be version 1.0.x
I use libmemcaced 0.53, and for php-memcahed I choose 2.0.0. Version maintenance of open source software is a mess
Install libmemcached
The code is as follows |
Copy code |
wget https://launchpad.net/libmemcached /1.0/0.53/+download/libmemcached-0.53.tar.gz
代码如下 |
复制代码 |
wget https://launchpad.net/libmemcached/1.0/0.53/+download/libmemcached-0.53.tar.gz
tar xvfz libmemcached-0.53.tar.gz
cd libmemcached-0.53
./configure --prefix=/opt/libmemcached
make && make install |
tar xvfz libmemcached-0.53.tar.gz
cd libmemcached-0.53
./configure --prefix=/opt/libmemcached
Make && make install
|
代码如下 |
复制代码 |
wget http://pecl.php.net/get/memcached-2.0.0.tgz
tar zvxf memcached-2.0.0.tgz
cd memcached-2.0.0/
./configure --enable-memcached --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/opt/libmemcached/
make && make install
|
Install php extension
The code is as follows |
Copy code |
wget http://pecl.php.net/get/memcached-2.0.0.tgz
tar zvxf memcached-2.0.0.tgz
cd memcached-2.0.0/
./configure --enable-memcached --with-php-config=/usr/local/php/bin/php-config --with-libmemcached-dir=/opt/libmemcached/
Make && make install
|
make install is to install memcached.so to ${php install dir}/extensions/no-debug-non-zts-20090626/. This directory varies with different PHP versions
The last step is to modify php.ini and add extension=memcached.so
We have already installed it and let’s take a look at a simple example
The code is as follows
代码如下 |
复制代码 |
#include
2 #include
3 #include
4
5 using namespace std;
6
7 int main(int argc,char *argv[])
8 {
9 //connect server
10 memcached_st *memc;
11 memcached_return rc;
12 memcached_server_st *server;
13 time_t expiration;
14 uint32_t flags;
15
16 memc = memcached_create(NULL);
17 server = memcached_server_list_append(NULL,"localhost",11211,&rc);
18 rc=memcached_server_push(memc,server);
19 memcached_server_list_free(server);
20
21 string key = "key";
22 string value = "value";
23 size_t value_length = value.length();
24 size_t key_length = key.length();
25
26
27 //Save data
28 rc=memcached_set(memc,key.c_str(),key.length(),value.c_str(),value.length(),expiration,flags);
29 if(rc==MEMCACHED_SUCCESS)
30 {
31 cout<<"Save data:"<
32 }
33
34 //Get data
35 char* result = memcached_get(memc,key.c_str(),key_length,&value_length,&flags,&rc);
36 if(rc == MEMCACHED_SUCCESS)
37 {
38 cout<<"Get value:"<
39 }
40
41 //Delete data
42 rc=memcached_delete(memc,key.c_str(),key_length,expiration);
43 if(rc==MEMCACHED_SUCCESS)
44 {
45 cout<<"Delete key:"<
46 }
47
48 //free
49 memcached_free(memc);
50 return 0;
51 }
52
53
编译:g++ -o testmemcached testmemcached.cpp -lmemcached
运行:./testmemcached
结果:Save data:value sucessful!
Get value:value sucessful!
Delete key:key sucessful!
|
|
Copy code
|
#include
2 #include
3 #include
4
5 using namespace std;
6 |
7 int main(int argc,char *argv[])
8 {
9 //connect server
10 memcached_st *memc;
11 memcached_return rc;
12 memcached_server_st *server;
13 time_t expiration;
14 uint32_t flags;
15
16 memc = memcached_create(NULL);
17 server = memcached_server_list_append(NULL,"localhost",11211,&rc);
18 rc=memcached_server_push(memc,server);
19 memcached_server_list_free(server);
20
21 string key = "key";
22 string value = "value";
23 size_t value_length = value.length();
24 size_t key_length = key.length();
25
26
27 //Save data
28 rc=memcached_set(memc,key.c_str(),key.length(),value.c_str(),value.length(),expiration,flags);
29 if(rc==MEMCACHED_SUCCESS)
30 {
31 cout<<"Save data:"<
http://www.bkjia.com/PHPjc/629821.htmlwww.bkjia.comtruehttp: //www.bkjia.com/PHPjc/629821.htmlTechArticlelibmemcached is a memcached library, client library, client library implemented in C and C++ languages, with low memory occupancy rate, thread safety, and provides full support for memcached functions. ...