使用Memcache的网站一般流量都是比较大的,为了缓解数据库的压力,让Memcache作为一个缓存区域,把部分信息保存在内存中,在前端能 够迅速的进行存取。 下面来介绍一下如何安装和使用memcache。
安装memcache
在ubuntu下安装memcache是非常的简单和快捷的,直接安装即可(本人使用的是ubuntu 10.04LTS)
sudo apt-get install memcached
memcached -d -m 50 -p 11211 -u root
参数说明:-m 指定使用多少兆的缓存空间;-p 指定要监听的端口; -u 指定以哪个用户来运行。 查看更多启动参数
接下来是要安装php的memcache模块和memcached模块
修改php.ini 的全局设置,本人的php.ini文件在/etc/php5/apache2/下
sudo vi /etc/php5/apache2/php.ini
找到session.save_handler,并设为 session.save_handler = memcache,把session.save_path前面的分号去掉,并设置为 session.save_path = “tcp://127.0.0.1:11211″
session.save_handler = memcache
session.save_path = “tcp://127.0.0.1:11211″
或者某个目录下的 .htaccess :
php_value session.save_handler “memcache”
php_value session.save_path “tcp://127.0.0.1:11211″
再或者在某个一个应用中:
ini_set(“session.save_handler”, “memcache”);
ini_set(“session.save_path”, “tcp://127.0.0.1:11211″);
使用多个 memcached server 时用逗号”,”隔开,并且和 Memcache::addServer() 文档中说明的一样,可以带额外的参数”persistent”、”weight”、”timeout”、”retry_interval” 等等,类似这样的:”tcp://host1:port1?persistent=1&weight=2,tcp://host2:port2″ 。
之后记得要重启apache服务器
sudo /etc/init.d/apache2 restart
查看一下phpinfo()中的 “Registered save handlers” 会有 “files user memcache” 这3个可用。如果没有的话重新安装一下或者确定自己是否有重启apache服务器。
接下来要测试一下是否安装成功,编辑文件cache.php,内容为:
view plaincopy to clipboardprint?
error_reporting(E_ALL);
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die("Could not connect");
$memcache->set('key', 'This is a test!', 0, 60);
$val = $memcache->get('key');
echo $val;
如果能看到 This is a test!,表示正常安装成功了。
用 memcache 来作 PHP 的 session.save_handler
view plaincopy to clipboardprint?
session_start();
$_SESSION["UserID"]=123;
echo session_id();
记下seesion_id,然后编辑一个新的文件,内容为:
view plaincopy to clipboardprint?
$memcache = memcache_connect('localhost', 11211);
var_dump($memcache->get('f4oi3gkal46t1vbb8kd98srff3')); // f4oi3gkal46t1vbb8kd98srff3 必须换成你上面取得的session_id
如果显示 string(13) “UserID|i:123;” 那么表示你成功使用了memecache。
用 memcache 来存储 session 在读写速度上会比 files 时快很多,而且在多个服务器需要共用 session 时会比较方便,将这些服务器都配置成使用同一组 memcached 服务器就可以,减少了额外的工作量。缺点是 session 数据都保存在 memory 中,持久化方面有所欠缺,但对 session 数据来说也不是很大的问题。
安装memcache
在ubuntu下安装memcache是非常的简单和快捷的,直接安装即可(本人使用的是ubuntu 10.04LTS)
sudo apt-get install memcached
memcached -d -m 50 -p 11211 -u root
参数说明:-m 指定使用多少兆的缓存空间;-p 指定要监听的端口; -u 指定以哪个用户来运行。 查看更多启动参数
接下来是要安装php的memcache模块和memcached模块
sudo apt-get install php5-memcache
sudo apt-get install php5-memcached
修改php.ini 的全局设置,本人的php.ini文件在/etc/php5/apache2/下
sudo vi /etc/php5/apache2/php.ini
找到session.save_handler,并设为 session.save_handler = memcache,把session.save_path前面的分号去掉,并设置为 session.save_path = “tcp://127.0.0.1:11211″
session.save_handler = memcache
session.save_path = “tcp://127.0.0.1:11211″
或者某个目录下的 .htaccess :
php_value session.save_handler “memcache”
php_value session.save_path “tcp://127.0.0.1:11211″
再或者在某个一个应用中:
ini_set(“session.save_handler”, “memcache”);
ini_set(“session.save_path”, “tcp://127.0.0.1:11211″);
使用多个 memcached server 时用逗号”,”隔开,并且和 Memcache::addServer() 文档中说明的一样,可以带额外的参数”persistent”、”weight”、”timeout”、”retry_interval” 等等,类似这样的:”tcp://host1:port1?persistent=1&weight=2,tcp://host2:port2″ 。
之后记得要重启apache服务器
sudo /etc/init.d/apache2 restart
查看一下phpinfo()中的 “Registered save handlers” 会有 “files user memcache” 这3个可用。如果没有的话重新安装一下或者确定自己是否有重启apache服务器。
接下来要测试一下是否安装成功,编辑文件cache.php,内容为:
view plaincopy to clipboardprint?
error_reporting(E_ALL);
$memcache = new Memcache;
$memcache->connect('localhost', 11211) or die("Could not connect");
$memcache->set('key', 'This is a test!', 0, 60);
$val = $memcache->get('key');
echo $val;
如果能看到 This is a test!,表示正常安装成功了。
用 memcache 来作 PHP 的 session.save_handler
view plaincopy to clipboardprint?
session_start();
$_SESSION["UserID"]=123;
echo session_id();
记下seesion_id,然后编辑一个新的文件,内容为:
view plaincopy to clipboardprint?
$memcache = memcache_connect('localhost', 11211);
var_dump($memcache->get('f4oi3gkal46t1vbb8kd98srff3')); // f4oi3gkal46t1vbb8kd98srff3 必须换成你上面取得的session_id
如果显示 string(13) “UserID|i:123;” 那么表示你成功使用了memecache。
用 memcache 来存储 session 在读写速度上会比 files 时快很多,而且在多个服务器需要共用 session 时会比较方便,将这些服务器都配置成使用同一组 memcached 服务器就可以,减少了额外的工作量。缺点是 session 数据都保存在 memory 中,持久化方面有所欠缺,但对 session 数据来说也不是很大的问题。