Home  >  Article  >  Backend Development  >  Familiarity and operation of PHP distributed cache memcached_PHP tutorial

Familiarity and operation of PHP distributed cache memcached_PHP tutorial

WBOY
WBOYOriginal
2016-07-13 09:58:46678browse

Familiarity and operation of PHP distributed cache memcached

In today's era of the rise of the Internet, major websites are facing a big data flow problem. How to improve website access speed and reduce database operations; as PHP developers, the methods we can generally think of include static page processing, Anti-leeching, CDN content distribution to accelerate access, mysql database optimization and indexing, setting up apache server cluster (), and various distributed caching technologies that are now popular: such as memcached/redis;

1. What is Memcached?

a.Memcached is a high-performance distributed memory object caching system for dynamic web applications to reduce database load. It improves the speed of dynamic, database-driven websites by caching data and objects in memory to reduce the number of database reads. Memcached is based on a hashmap that stores key/value pairs. Its daemon is written in C, but the client can be written in any language and communicates with the daemon through the memcached protocol.

b. The key of Memcached is generally a string, and the value cannot be repeated; the value can be put into strings, arrays, values, objects, Boolean, binary data and pictures and videos

c.Memcached default service port is 11211

2. Steps to use Memcached with PHP

f35d6e602fd7d0f0edfa6f7d103c1b57Preparation: Download the Memcached service installation package: memcached-1.2.6-win32-bin.7z and the dll library to access the Memcached service: php_memcache.dll

www.memcached.org (It seems that the official website cannot be accessed, you can download it from other places)

2cc198a1d5eb0d3eb508d858c9f5cbdb Unzip the package memcached-1.2.6-win32-bin.7z (you can unzip and copy it to the same directory as the web server), then operate cmd, enter the directory you just unzipped and install it with the command: memcached. exe -d install

5bdf4c78156c7953567bb5a0aef2fc53 After installation (to determine whether the installation is complete, you can check whether there is memcached service in the service list), then start cmd with the command: memcached.exe -d start

The specific operations are as follows:

23889872c2e8594e0f446a471a78ec4cAfter starting the memcached service, put the downloaded php_memcache.dll into the ext directory under the php5 directory of the web server

43ad812d3a971134e40facaca816c822 Modify in php.ini, load the extension library php_memcache.dll, and then restart the apache server

efbfa0de8737dc86eae413541a49df20 Start practicing. Memcached mainly has crud operations (that is, creating, reading, updating, and deleting value operations. You can refer to the manual for details). Let’s make a simple operation of setting the value and then reading the value

a. Setting value page

<!--?php
header("Content-type:text/html;charset=utf-8");
//创建Memcache对象
$mem = new Memcache();  
//连接Memcache服务器
if(!$mem--->connect("127.0.0.1")) {
    echo "连接Memcache服务器失败!";
}

//设置,&#39;myword&#39;参数代表键key,&#39;hello world&#39;代表存放的值,MEMCACHE_COMPRESSED代表压缩内容,50代表存放时间,单位秒
if ($mem->set(&#39;myword&#39;,&#39;hello world&#39;,MEMCACHE_COMPRESSED,50))
{
    echo "设置值成功!";
}

?>

Note: If the value is stored in memory for more than 30 days, use a timestamp to set 100 days: such as time() 3600*24*100; setting 0 means it will never expire.


b.Read value page

<!--?php
header("Content-type:text/html;charset=utf-8");
$mem = new Memcache();  
if(!$mem--->connect("127.0.0.1")) {
    echo "连接Memcache服务器失败!";
}

//读取键myword值
$value = $mem->get(&#39;myword&#39;);
if(!$value)
{
    echo "读取失败!";
}
else
{
    echo "读取的值=".$value;
}

c. Delete and update examples:

<!--?php
header("Content-type:text/html;charset=utf-8");
//创建Memcache对象
$mem = new Memcache();  
//连接Memcache服务器
if(!$mem--->connect("127.0.0.1")) {
    echo "连接Memcache服务器失败!";
}

//设置,&#39;myword&#39;参数代表键key,&#39;hello world&#39;代表存放的值,MEMCACHE_COMPRESSED代表压缩内容,50代表存放时间,单位秒
if ($mem->set(&#39;myword&#39;,&#39;hello world&#39;,MEMCACHE_COMPRESSED,50))
{
    echo "设置值成功!";
}

//读取键myword值
$value = $mem->get(&#39;myword&#39;);
if(!$value)
{
    echo "读取失败!";
}
else
{
    echo "读取的值=".$value;
}

//更新键值
$mem->replace(&#39;myword&#39;,&#39;hello everybody!&#39;);

$value = $mem->get(&#39;myword&#39;);
if(!$value)
{
    echo "读取失败!";
}
else
{
    echo "读取的值=".$value;
}

//删除键myword值
$mem->delete(&#39;myword&#39;);

$value = $mem->get(&#39;myword&#39;);
if(!$value)
{
    echo "读取失败!";
}
else
{
    echo "读取的值=".$value;
}

//关闭
$mem->close();  



?>

Note: There are many methods under the mem object, which can be learned by reading the manual.

40107655ec554331c1c6222ab67a141c The setting of multiple memcached servers is actually a little bit different than one memcached server. It is to add multiple memcached servers to the connection pool through the addserver method. After setting up, when crud operates, the internal The corresponding server will be connected to the corresponding server in a balanced manner through the corresponding algorithm and the corresponding operation will be performed.

<!--?php
header("Content-type:text/html;charset=utf-8");
//创建Memcache对象
$mem = new Memcache(); 
//添加多台memcached服务器
$mem--->addserver(&#39;192.168.0.1&#39;,11211); 
$mem->addserver(&#39;192.168.0.2&#39;,11211);
$mem->addserver(&#39;192.168.0.3&#39;,11211);
$mem->addserver(&#39;192.168.0.4&#39;,11211);


//设置,&#39;myword&#39;参数代表键key,&#39;hello world&#39;代表存放的值,MEMCACHE_COMPRESSED代表压缩内容,50代表存放时间,单位秒
if ($mem->set(&#39;myword&#39;,&#39;hello world&#39;,MEMCACHE_COMPRESSED,50))
{
    echo "设置值成功!";
}

//读取键myword值
$value = $mem->get(&#39;myword&#39;);
if(!$value)
{
    echo "读取失败!";
}
else
{
    echo "读取的值=".$value;
}

?>

37cd6113a8c348d99fa846f2c6fcea98 Access to memcache is user-free, and security needs to be considered. Security is generally achieved by placing it on the intranet and restricting external network access to the memcache port through a firewall

c161494dba5e0dd0fb25d890c74e408dBy modifying php.ini, the session value can be put into the memcache server

session.save_handler = files changed to session.save_handler = memcached

session.save_path = "N;MODE;/path" changed to session.save_path = "tcp://127.0.0.1:11211"

www.bkjia.comtruehttp: //www.bkjia.com/PHPjc/976801.htmlTechArticlePHP distributed cache memcached familiarity and operation In today's era of the rise of the Internet, major websites are facing a big data Streaming problem, how to improve website access speed and reduce database load...
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn