linux安装memcached
一:为什么要使用memcached
瓶颈:互联网发展,特别在web2.0兴起之后,传统数据库开始出现瓶颈
1:对数据库的高并发读写
2:对海量数据库的处理(海量数据查找)
memcache 是高性能的分布式内存缓存服务器,通过缓存数据库查询结果,减少数据库访问次数,已提高动态web应用的速度和扩展。
保存在memcache的对象实际上是放置在内存中,并不是保存在 cache 文件中的,这也是memcache高效的原因之一,从内存数据要比硬盘快很多倍。注意,这些对象并不是持久的,服务停止之后,里边的数据就会丢失。
缺点:存储对象并不是持久的,服务器停止数据就会丢失。
memcache本身是为了缓存而设计的服务器,内存达到一定值,就会使用LRU算法自动删除不常使用的缓存。
二:安装memcached的服务器
memcached官网: http://memcached.org
两种安装方式,1:源码包安装 2:yum源安装
(1)源码包安装:
1.memcached-1.4.25 //Memcached服务端.
2.memcached-2.2.0 //Memcached服务PHP的扩展之一Memcached扩展,其实Memcached扩展有两种,还有一种叫Memcache,不过Memcached比Memcache功能更强大. Memcached不支持windows(https://pecl.php.net/package/memcached)
memcache-3.0.8 //Memcached服务PHP的扩展之一Memcache扩展 有windows扩展(https://pecl.php.net/package/memcache)
3.libevent-1.4.14b-stable //Memcached服务端的依赖包.
4.libmemcached-1.0.18 //Memcached扩展的依赖包.
注php memcached客户端除此两种之外,还有一种方法,可以避开扩展、重新编译所带来的麻烦,那就是直接使用 php-memcached-client,但是效率会比扩展库稍差一些。
php的memcached客户端(memcache memcached)的区别参考:
http://blog.csdn.net/juan083/article/details/49432711
http://blog.csdn.net/baidu_30000217/article/details/53586536
http://blog.csdn.net/lein_wang/article/details/52756859
这三篇文章已经分析的很透测了
#先安装Memcached服务端的依赖包.
tar -zxvf libevent-1.4.14b-stable.tar.gz
cd libevent-1.4.14b-stable
./configure --prefix=/usr/local/libevent
make
make install
#然后安装Memcached扩展的依赖包.
https://launchpad.net/libmemcached
tar -zxvf libmemcached-1.0.18.tar.gz
cd libmemcached-1.0.18
./configure --prefix=/usr/local/libmemcached
#接着安装Memcached服务端.
tar -zxvf memcached-1.4.25
cd memcached-1.4.25
./configure -prefix=/usr/local/memcached -with-libevent=/usr/local/libevent
make && make install
#启动memcached
cd /usr/local/memcached/bin/memcached
./memcached -d -m 100 -u root -l 114.215.112.83 -p 11211 -c 512 -P /tmp/memcached.pid
#接着安装Memcached服务PHP的扩展之一Memcached扩展
http://pecl.php.net/package/memcached
tar -zxvf memcached-2.2.0.tgz
cd memcached-2.2.0
/usr/local/php/bin/phpize
./configure --prefix=/usr/local/memcached --with-php- config=/usr/local/php/bin/php-config --with-libmemcached-dir=/usr/local/libmemcached --disable-memcached-sasl
make && make install
#接着安装Memcached服务PHP的扩展之一Memcache扩展
https://pecl.php.net/package/memcache
wget pecl.php.net/get/memcache-3.0.8.tgz
tar -zxvf memcache-3.0.8 .tgz
cd memcache-3.0.8
/usr/local/php/bin/phpize
./configure --prefix=/usr/local/memcache --with-php- config=/usr/local/php/bin/php-config
make && make install
cd /usr/local/php/lib/
vim php.ini
extension=memcache.so
extension=memcached.so
重启apache
使用memcache常用操作:
<?php
//连接Memcache
$mem = new Memcache;
$mem->connect("114.215.112.83", 11211);
//保存数据
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."<br>";
//替换数据
$mem->replace('key1', 'This is replace value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br>";
//保存数组数据
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br>";
//删除数据
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br>";
//清除所有数据
$mem->flush();
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br>";
//关闭连接
$mem->close();
?>
使用memcached连接
使用memcached-client.php链接
<
?php
// 包含 memcached 类文件
require_once('memcached-client.php');
// 选项设置
$options = array(
'servers' => array('192.168.1.1:11211'), //memcached 服务的地址、端口,可用多个数组元素表示多个 memcached 服务
'debug' => true, //是否打开 debug
'compress_threshold' => 10240, //超过多少字节的数据时进行压缩
'persistant' => false //是否使用持久连接
);
// 创建 memcached 对象实例
$mc = new memcached($options);
// 设置此脚本使用的唯一标识符
$key = 'mykey';
// 往 memcached 中写入对象
$mc->add($key, 'some random strings');
$val = $mc->get($key);
echo "n".str_pad('$mc->add() ', 60, '_')."n";
var_dump($val);
// 替换已写入的对象数据值
$mc->replace($key, array('some'=>'haha', 'array'=>'xxx'));
$val = $mc->get($key);
echo "n".str_pad('$mc->replace() ', 60, '_')."n";
var_dump($val);
// 删除 memcached 中的对象
$mc->delete($key);
$val = $mc->get($key);
echo "n".str_pad('$mc->delete() ', 60, '_')."n";
var_dump($val);
?>
在一台或者多台机器启用一个或者多个进程,这里是在一台机器启用两个进程,使用两个端口:
./memcached -d -m 100 -u root -l 114.215.112.83 -p 11211 -c 512 -P /tmp/memcached.pid
./memcached -d -m 100 -u root -l 114.215.112.83 -p 11212 -c 512 -P /tmp/memcached.pid
<?php
//连接Memcache
$mem = new Memcache;
$mem->addServer("114.215.112.83", 11211);
$mem->addServer("114.215.112.83", 11212);
//保存数据
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."<br>";
//保存数组数据
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br>";
//删除数据
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br>";
//关闭连接
$mem->close();
?>
Memcached一些特性和限制
• 在 Memcached 中可以保存的item数据量是没有限制的,只有内存足够
• Memcached单进程最大使用内存为2G,要使用更多内存,可以分多个端口开启多个Memcached进程
• 最大30天的数据过期时间, 设置为永久的也会在这个时间过期,常量REALTIME_MAXDELTA
60*60*24*30 控制
• 最大键长为250字节,大于该长度无法存储,常量KEY_MAX_LENGTH 250 控制
• 单个item最大数据是1MB,超过1MB数据不予存储,常量POWER_BLOCK 1048576 进行控制,
它是默认的slab大小
• 最大同时连接数是200,通过 conn_init()中的freetotal 进行控制,最大软连接数是1024,通过
settings.maxconns=1024 进行控制
• 跟空间占用相关的参数:settings.factor=1.25, settings.chunk_size=48, 影响slab的数据占用和步进方式
(2)yum源安装:
安装: yum search memcached 搜索memcached,有了,可以进行安装了 yum -y install memcached
memcache关联php安装 :
yum -y install php-pecl-memcache
安装php扩展:
先装:yum install php-devel
后装:pecl install memcache
//PHP的Memcached扩展,其实Memcached扩展有两种,还有一种叫Memcache,不过Memcached比Memcache功能更强大.
启动memcached的服务端:
yum安装默认情况下memcached安装到/usr/local/bin下,进入安装目录之后,
./memcached -d -m 100 -u root -l 192.168.80.130 -p 11211 -c 512 -P /tmp/memcached.pid
获取运行状态:ps -ef|grep memcached
memcached -h可以查看memcached的参数
注:
-d选项是启动一个守护进程,
-m是分配给Memcache使用的内存数量,单位是MB.这里是100MB,默认是64MB
-u是运行Memcache的用户,这里是root.
-l是监听的服务器IP地址,默认是本机.
-p是设置Memcache监听的端口,默认是11211,最好是1024以上的端口.
-c选项是最大运行的并发连接数,默认是1024,这里设置512,按照你服务器的负载量来设定.
-P是设置保存Memcache的pid文件位置.
-h 打印帮助信息
-v 输出警告和错误信息
-vv 打印客户端的请求和返回信息
使用telnet连接memcached服务:telnet 192.168.80.130 11211
stats查看状态,flush_all:清楚缓存
查看memcached状态的基本命令,通过这个命令可以看到如下信息:
注:
STAT pid 22459 进程ID
STAT uptime 1027046 服务器运行秒数
STAT time 1273043062 服务器当前unix时间戳
STAT version 1.4.4 服务器版本
STAT pointer_size 64 操作系统字大小(这台服务器是64位的)
STAT rusage_user 0.040000 进程累计用户时间
STAT rusage_system 0.260000 进程累计系统时间
STAT curr_connections 10 当前打开连接数
STAT total_connections 82 曾打开的连接总数
STAT connection_structures 13 服务器分配的连接结构数
STAT cmd_get 54 执行get命令总数
STAT cmd_set 34 执行set命令总数
STAT cmd_flush 3 指向flush_all命令总数
STAT get_hits 9 get命中次数
STAT get_misses 45 get未命中次数
STAT delete_misses 5 delete未命中次数
STAT delete_hits 1 delete命中次数
STAT incr_misses 0 incr未命中次数
STAT incr_hits 0 incr命中次数
STAT decr_misses 0 decr未命中次数
STAT decr_hits 0 decr命中次数
STAT cas_misses 0 cas未命中次数
STAT cas_hits 0 cas命中次数
STAT cas_badval 0 使用擦拭次数
STAT auth_cmds 0
STAT auth_errors 0
STAT bytes_read 15785 读取字节总数
STAT bytes_written 15222 写入字节总数
STAT limit_maxbytes 1048576 分配的内存数(字节)
STAT accepting_conns 1 目前接受的链接数
STAT listen_disabled_num 0
STAT threads 4 线程数
STAT conn_yields 0
STAT bytes 0 存储item字节数
STAT curr_items 0 item个数
STAT total_items 34 item总数
STAT evictions 0 为获取空间删除item的总数
退出telnet ctrl+]
然后再输入quit
在php.ini中添加 extension=memcache.so
则在phpinfo中出现
selinux是一套linux的安全系统,它指定了应用程序可以访问的磁盘文件、网络端口等等。如果装有selinux,那么默认的selinux 会阻止memcache程序访问11211端口,所以必须对selinux进行配置才行。
编辑 /etc/selinux/config 文件,将 SELINUX=enforcing 改为 SELINUX=disabled 或者SELINUX=0
测试:
< ?php
$mem = new Memcache; //创建memecache对象
$dd = $mem->connect('192.168.1.104','11211') or die('connect die'); //连接memcached服务器
$mem->set('key','this is memcache test'); //存储数据
$val = $mem->get('key'); //获取数据
echo $val;//输出数据
$mem->delete('key');//删除数据
$mem->flush();//强制刷新全部缓存,即清空memcahced服务器
$mem->close();//断开与memcached服务器连接
?>
在一台或者多台机器启用一个或者多个进程,这里是在一台机器启
用两个进程,使用两个端口:
#./memcached -d -u nobody -m 512 127.0.0.1 -p 11211
#./memcached -d -u nobody -m 512 127.0.0.1 -p 11212
源码打印?
<?php
//连接Memcache
$mem = new Memcache;
$mem->addServer("localhost", 11211);
$mem->addServer("localhost", 11212);
//保存数据
$mem->set('key1', 'This is first value', 0, 60);
$val = $mem->get('key1');
echo "Get key1 value: " . $val ."<br>";
//保存数组数据
$arr = array('aaa', 'bbb', 'ccc', 'ddd');
$mem->set('key2', $arr, 0, 60);
$val2 = $mem->get('key2');
echo "Get key2 value: ";
print_r($val2);
echo "<br>";
//删除数据
$mem->delete('key1');
$val = $mem->get('key1');
echo "Get key1 value: " . $val . "<br>";
//关闭连接
$mem->close();
?>
linux安装memcached的更多相关文章
- Linux安装Memcached服务
环境: CentOS 6.4 libevent-1.4.14b-stable memcached-1.4.21 查看是否安装libevent[root@localhost ~]# rpm -qa |g ...
- linux 安装 memcached
1.Linux系统安装memcached,首先要先安装libevent库. yum install libevent libevent-deve 2.安装memcached yum install - ...
- linux安装memcached及memcache扩展
一.安装libevent函数库 下载地址:http://libevent.org 默认被安装到:/usr/local/lib目录下 安装memcached之前需要先安装libevent函数库. 可以通 ...
- Mac linux 安装memcached服务 用法
今天在Mac上安装memcached服务的时候 由于安装memcached之前需要安装libevent依赖包 所以使用brew install libevent 安装过程中报错 Warning: Yo ...
- linux安装memcached和php的memcache扩展 (已使用)
所需软件libevent-1.4.6-stable.tar.gz (http://monkey.org/~provos/libevent/)memcache-2.2.3.tgz (http://pec ...
- linux 安装memcached
1.下载文件wget http://www.monkey.org/~provos/libevent-1.4.12-stable.tar.gzwget http://www.memcached.org/ ...
- linux 安装memcached C/C++使用libmemcached库(续)
#include <iostream> #include <string> #include <libmemcached/memcached.h> using na ...
- linux安装memcached安装以及memcache的php扩展
https://blog.csdn.net/sshcnwold/article/details/79085082
- Linux 下安装 Memcached 和 PHP 开启 Memcached 扩展
[项目背景]:阿里云ECS服务器,Linux(centos7.2 64位),环境部署使用的是阿里云一键安装包(LAMP)等 [项目需求]:linux安装memcached 和php开启Memcache ...
随机推荐
- Jmeter参数化与检查点
一.Jmeter参数话有3种方法: 1. add->pre processors->user parameter(用户参数) 2.add->config Element->CS ...
- android Butter Knife 使用详解
Butter Knife github连接:https://github.com/JakeWharton/butterknife 本文使用的butterknife版本7.0.1 butterknife ...
- Android Studio修改字体大小
android studio提供的主题是不能修改字体和字体大小的,如果要修改大小就的另存一份自定义的主题了. 1.启动Android Studio,菜单"File"-"S ...
- Python -- Gui编程 -- Qt库的使用 -- 布局与基本控件
1.垂直布局,水平布局和网格布局 import sys from PyQt4 import QtCore, QtGui class MyWindow(QtGui.QWidget): def __ini ...
- 带你了解数据库中事务的ACID特性
前言 前面我们介绍过数据库中 带你了解数据库中JOIN的用法 与 带你了解数据库中group by的用法的相关用法.本章节主要来介绍下数据库中一个非常重要的知识点事务,也是我们项目中或面试中经常会遇到 ...
- lintcode-->哈希函数
在数据结构中,哈希函数是用来将一个字符串(或任何其他类型)转化为小于哈希表大小且大于等于零的整数.一个好的哈希函数可以尽可能少地产生冲突.一种广泛使用的哈希函数算法是使用数值33,假设任何字符串都是基 ...
- synchronized修饰方法和对象的区别
使用synchronized(object) { 代码块.... } 能对代码块进行加锁,不允许其他线程访问,其的作用原理是:在object内有一个变量,当有线程进入时,判断是否为0,如果为0,表示可 ...
- Nodejs学习笔记(十二)—定时任务(node-schedule)
写在之前 在实际开发项目中,会遇到很多定时任务的工作.比如:定时导出某些数据.定时发送消息或邮件给用户.定时备份什么类型的文件等等 一般可以写个定时器,来完成相应的需求,在node.js中自已实现也非 ...
- json list数据递归生成树状层级JSON
<!DOCTYPE html> <html> <head> <script> var data=[ {"id":"aaa& ...
- 用java做操作系统内核:软盘读写
在前两节,我们将一段代码通过软盘加载到了系统内存中,并指示cpu执行加入到内存的代码,事实上,操作系统内核加载也是这么做的.只不过我们加载的代码,最大只能512 byte, 一个操作系统内核,少说也要 ...