memcache基本用法 笔记

来源:互联网 发布:python celery 编辑:程序博客网 时间:2024/05/15 12:00
memacahed 
memcached  官网  http://www.danga.com
memcached  是一个高效的分布式的内存对象缓存系统 她可以支持把各种php(array  object 基本数据类型(整数  小数 ),{资源句柄不能放,资源句柄会返回一个0})的数据 放入到他管理的内存中


她在内存中维护了一个超大的hash表 存放了很多东西


查询速度
数据库<文件<内存


memcached  可以支持多个


卸载 memcached   打开 cmd
cd  C:\wamp\memcached
memcached -d uninstall


安装  memcached -d install


然后就可以在服务里面 启动 memcached 了  或者在cmd 里面  memcached -d start 
然后可以查看端口  netstat -anb  有个11211 端口 就是 memcached


常用命令


memcached -p  监听端口
-l 链接的IP地址 默认是本机
-d start 启动 memcached
-d restart  重启memcached
-d stop|shutdown  关闭 memcached
-d install   安装memcached
-d uninstall  卸载memcached
-u 以xx身份运行 (仅在root运行时候有效)
-m  最大内存使用  单位 mb  默认 64mb  最大好像2G
-M  内存耗尽是返回错误 而不是删除项
-c  最大连接数 默认 1024
-f  块大小增长因子 1.25
-n  最小分配空间  key+value+flags  默认48
-h   help


如果网站内存要大于64M 就要这样启动
memcached -d start  -m 256m
如果有很长时间没有用的缓存  memcached 有个LRU算法 可以删除不用的缓存


常用端口 
80  web服务器端口
21  ftp端口
23  telent
1521 oracle
1433  sql server


使用方法
telent    ----->  memcached缓存系统
php程序   -------> (memcache 扩展  memcached扩展  使用 socket 访问) -> memcached


add  name 0 60 5   (add是指令名 name是key (key/value) 0是标志 60是60秒 5是放入多大数据)




memcached php  
先找个 memcached扩展
先去php.ini里面把扩展开了 


语法
  //获得资源句柄
  $mem = new Memcache();
  
  //链接
  $mem->connect('127.0.0.1',11211);
  
  添加一条   名称       内容     是否压缩  时间
  添加一个要缓存的数据如果作为这个缓存的数据的键在服务器上还不存在的情况下,
  $mem->add('var_key','hello world!',false,100);
  设置一个指定 key 的缓存变量内容
  $mem->set('var_key','hello world!',false,100);
  获取
  var_dump($mem->get('var_key'));
  
  
  memcached  如果要取出来某个类的资源 要先把类引入
  
  多个memcached  不要用  connect
  
  $mem->addServer("127.0.0.1",11211);
  $mem->addServer("127.0.0.2",11211);
  
  $mem->add('key','name','0',100);
  
  
  
 如果无法操作apache  安装 memcached  那么 可以下载一个 memecache-client.php来操作
 
 require_once 'memcached.php';
 * 
 * $mc = new memcached(array(
 *              'servers' => array('127.0.0.1:10000',     //多个memcached服务器
 *                                 array('192.0.0.1:10010', 2),//多个memcached服务器
 *                                 '127.0.0.1:10020'),   //多个memcached服务器
 *              'debug'   => false,   //是否开启调试
 *              'compress_threshold' => 10240,  //最大压缩
 *              'persistant' => true));    //链接要不要长连接  一般不用
 *
 * $mc->add('key', array('some', 'array'));
 * $mc->replace('key', 'some random string');
 * $val = $mc->get('key');
  
  
  //对数字增加一个值
  $mem->increment('age',1);
  
  
 如何把session 放入 memcached 中
 php.ini中 大约1440行
 默认是放文件里面
 session.save_handler = files;
把session数据放入到memcache里面  可是你得告诉他memcache在哪里 
session.save_handler = memcache;
1473行  定义一个逗号分隔的memcache 服务器列表
session.save_path = "tcp://127.0.0.1:11211";