Memcache是danga.com的一个项目,用这个缓存项目来构建自己大负载的网站,来分担数据库的压力。

它可以应对任意多个连接,使用非阻塞的网络IO。由于它的工作机制是在内存中开辟一块空间,然后建立一个HashTable,Memcached自管理这些HashTable。

为什么会有Memcache和memcached两种名称?

这么理解吧,你知道mysql吧,mysql就是服务器,但是php没有mysql扩展是连不上,

memcached用来进行内存缓存,php要连接需要添加memcache扩展,这下理解了吧。

下面是配置方法:

1)安装memcached前需要先安装libevent

[root@aliyun tools]# tar -zxf libevent-1.4.13-stable.tar.gz

[root@aliyun tools]# cd libevent-1.4.13-stable
[root@aliyun libevent-1.4.13-stable]# ./configure
[root@aliyun libevent-1.4.13-stable]# make && make install

 2) 安装memcahced服务

tar -zxf memcached-1.4.13.tar.gz
cd memcached-1.4.13
./configure
make && make install

 3)启动服务

[root@weiwei memcached-1.4.13]# memcached -m 16m -p 11211 -d -u root -c 8192

给多少内存要自己算,根据需求
还可以同时起几个
[root@weiwei memcached-1.4.13]# memcached -m 16m -p 11212 -d -u root -c 8192
[root@weiwei memcached-1.4.13]# memcached -m 16m -p 11213 -d -u root -c 8192

  4)存数据取数据

操作memcached命令的语法:
set key 0 0 10
<command name> <key> <flags><exptime><bytes>\r\n
过期时间

  

#存储
[root@weiwei ~]# printf "set key008 0 0 10\r\noldboy0987\r\n" | nc 127.0.0.1 11211
STORED
#查询
[root@weiwei ~]# printf "get key008\r\n"|nc 127.0.0.1 11211
VALUE key008 0 10
oldboy0987
END
#删除
[root@weiwei ~]# printf "delete key008\r\n"|nc 127.0.0.1 11211
DELETED 也可以telnet登录,,然后操作,但是不是很建议,不方便

  5)安装memecache客户端

ar -zxf memcache-2.2.5.tgz
cd memcache-2.2.5
/application/php/bin/phpize
./configure --with-php-config=/application/php/bin/php-config --enable-memcache --with-zlib-dir
echo $?
make && make install
ll /application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/
total 244
-rwxr-xr-x. 1 root root 246624 Sep 25 20:09 memcache.so

  6)因为配置客户端所以要配置php.ini文件

改为如下:
winodows的不要改
extension_dir = "/application/php5.3.27/lib/php/extensions/no-debug-non-zts-20090626/" 并添加一行
extension=memcache.so

  7)然后重启php,查看是否生效

pkill php-fpm
/application/php/sbin/php-fpm
phpinfo();查看有没有相应的模块 用php脚本的方式查看
<?php
$memcache = new Memcache; //创建一个memcache对象
$memcache->connect('127.0.0.1', 11211) or die ("Could not connect"); //连接Memcached服务器
$memcache->set('key001', 'oldboy001'); //设置一个变量到内存中,名称是key001值是oldboy001
$memcache->set('key002', 'oldboy002'); //设置一个变量到内存中,名称是key002值是oldboy002
$get_value01 = $memcache->get('key001'); //从内存中取出key001的值
$get_value02 = $memcache->get('key002'); //从内存中取出key002的值
echo $get_value02."<br>";
echo $get_value01;
?> 结果:
oldboy002
oldboy001

  8)memcached如何实现集群中的session共享存储

 

在php.ini文件中修改,所有的web服务器都改这两个地方就可以共享存储session了,每个WEB服务安装个客户端就好,然后去吧
1)session.save_handler = memcache
2)session.save_path = "tcp://192.168.222.128:11211" 优点:
1)memcached是内存缓存,在读写速度上会比普通files时快很多。
2)可以解决多个服务器共用session的难题。
缺点:
1)session数据都保存在memory中,持久化方面有所欠缺,但对session数据来说不是问题。
2)也可以用其他的持久化系统存储sessions,例如:redis,ttserver。
3)高性能高并发场景,cookies的效率比session要好很多,因此,很多大网站都会用cookies解决会话共享问题

  9)memcached状态查看

stat settings可以查看一些memcached设置 例如 线程数
stats slabs 查看slabs相关情况
stats items 查看Items相关情况
stats sizes查看存在的Item个数和大小
stats cachedump 查看key value
stats reset 清理统计数据

  

详解----memcache服务端与客户端的更多相关文章

  1. WebSocket安卓客户端实现详解(三)–服务端主动通知

    WebSocket安卓客户端实现详解(三)–服务端主动通知 本篇依旧是接着上一篇继续扩展,还没看过之前博客的小伙伴,这里附上前几篇地址 WebSocket安卓客户端实现详解(一)–连接建立与重连 We ...

  2. linux(centos 6.4)下安装php memcache服务端及其客户端(详细教程)

    前言 在搭建个人博客时,由于没有使用任何框架,纯手工code前台和后台,导致遇到许多问题,其中一个问题就是mysql连接导致的页面相应速度异常低.在查询各种途径后,只能考虑使用memcache缓存.在 ...

  3. Zabbix配置文件详解之服务端zabbix_server

    zabbix作为运维邻域不可缺少的一员,它的各种文档可是数不胜数啊,但是关于配置文件的解释与说明就有点少.这里列出zabbix配置文件篇之zabbix_server. Zabbix Server端配置 ...

  4. memcache服务端与客户端的安装部署

    1)安装memcached前需要先安装libevent [root@aliyun tools]# tar -zxf libevent-1.4.13-stable.tar.gz [root@aliyun ...

  5. 开源PLM软件Aras详解三 服务端简易开发

    废话少说,直接进入主题, 以CAD为例: 先找到CAD对象类:具体操作见下图 双击打开,找到服务端事件:见下图 点击新建对象,点击添加,新建Method 编写Method,语言分为前端和后端,前端支持 ...

  6. Mir2源码详解之服务端-登录网关(LoginGate)

    传奇这款游戏,一直对我的影响很大.当年为了玩传奇,逃课,被老师叫过N次家长.言归正传,网上有很多源码,当然了,都是delphi的.并且很多源码还不全, 由于一直学习的c.c++.delphi还真不懂. ...

  7. Mir2源码详解之服务端-选择(角色)网关(SelGate)

    其实,SelGate也就是 LoginGate,其源码实现完全相同.不必怀疑,市面上的都是这么做~!这里单独写这篇文章,就是为了说明这点!

  8. K2 K2Blackpearl安装步骤详解(服务端)

    转:http://www.cnblogs.com/dannyli/archive/2011/11/30/2269485.html 以下是K2 Blackpearl的安装步骤,本人亲测可用哦. 1.安装 ...

  9. 使用Apache CXF开发WebServices服务端、客户端

    在前一篇的博客中,我使用Xfire1.x来开发了WebServies的服务端. 但是如果你访问Apache的官网,可以看到xfire已经被合并了. 最新的框架叫做CXF. Apache CXF = C ...

随机推荐

  1. Java多线程与并发——死锁与中断线程

    过多的同步有可能出现死锁,死锁的操作一般是在程序运行的时候才有可能出现. 多线程中要进行资源的共享,就需要同步,但同步过多,就可能造成死锁. 死锁例子: package com.vince; /** ...

  2. (转)在CentOS中修改中文字符集

    虽然在实际工作环境下,Linux中不建议使用中文,但是如果一定要进行中文显示,尤其对于刚接触linux且英语基础不太好的人来说,那么本文具有一定的参考价值. 本文介绍在linux的shell环境下优化 ...

  3. vs2017 运行所选代码生成器时出错

    [转]https://blog.csdn.net/sunshineyang1205/article/details/80211313 ASPNET MVC Core中像Controller中添加控制器 ...

  4. pat1098. Insertion or Heap Sort (25)

    1098. Insertion or Heap Sort (25) 时间限制 100 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yu ...

  5. C#中接口的深入浅出【转】

    C#中接口的深入浅出 假设我们公司有两种程序员:VB程序员,指的是用VB写程序的程序员,用clsVBProgramer这个类表示:Delphi程序员指的是用Delphi写程序的程序员,用clsDelp ...

  6. web.config文件executionTimeout的单位

      executionTimeout:表示允许执行请求的最大时间限制,单位为秒

  7. [QualityCenter]设置工作流脚本-根据某字段是否包含指定字符串来判断其他字段的选值

    需求:当在创建或更改值时,自动判断A字段是否包含B值,然后自动填写相应的内容. 如以下例子: 在脚本编辑器新建一个函数TestPlan_Test_New,然后编写脚本如下: '通过主题判断项目内容   ...

  8. GBase数据库存储过程——批量删除多个数据表的数据

    偶尔需要清空一下数据库,重装成本太高. --清空历史存储过程 DROP Procedure `dap_model`.`delete_datas` ; --创建存储过程 DELIMITER // CRE ...

  9. safenet 超级狗 加密狗

    1.CS程序可以工作正常: 2.BS程序,服务器验证狗,IIS设置32位兼容方法1: dog.SetLibPath,设置查找依赖dll路径: 方法2:默认系统目录 C:\Windows\SysWOW6 ...

  10. AD7190的小总结

    1.单次转换模式 通过配置“模式寄存器的MD2.MD1.MD0为001”,便可启动单次转换. 流程“上电 -> 单次转换 -> 省电模式 ” , 片内振荡上电需要大约1ms.   单次转换 ...