谭兄

导航

 

 

本质上,Memcached是一个简洁的key-value存储系统, 可以保存布尔,整数,浮点数,对象,数组,NULL,二进制数据(视频,音频,文件)。通过在内存中维护一张巨大的hash表.  每次客户端先访问Memcached, 如果命中直接返回数据, 否则丛数据库中查询返回给客户端. 然后更新Memcached.   

如果Memcached存满了, 会使用LRU策略淘汰之前的对象内存.

  1. 基于C/S结构
  2. 基于libevent的时间处理大并发
  3. 内存存储系统
  4. 支持分布式(一致性哈希)

 

 

ubuntu下安装

sudo apt-get install memcached

 

通过 telnet 命令并指定主机ip和端口来连接 Memcached 服务.

telent 127.0.0.1 11211(默认端口)

 

常用命令只有几个

 

set  设置键为name, 额外标识0, 保存时间永久, 值长度, 值为ming。  如果已经存在则会进行替换.                       

set name 0 0 4

ming
STORED

 

add    添加新数据, 如果之前已经存在, 则不会进行更新

 

replace 替换值

 

append 向值的后面追加数据

 

prepend  向值的前面追加数据

 

get key1 key2 key3  获取键对应的值

 

delete key1 key2 删除键值对

 

stats  统计信息查看, PID, 连接数, 版本号等

 

 

php操作实例

 

如果没有编译 libmemcached, 先下载编译它.

1:先下载libmemcached:
wget https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz

2:解包:
tar -zxf libmemcached-1.0.18.tar.gz 

3:进入解压后的包,编译:
./configure --prefix=/usr/local/libmemcached --with-memcached 
//注意:--with-memcached这个选项一定要加上
4:安装
make && make install

 

 

安装memcached扩展

wget http://pecl.php.net/get/memcache-2.2.7.tgz               
tar -zxvf memcache-2.2.7.tgz
cd memcache-2.2.7
/usr/local/php/bin/phpize
./configure --with-php-config=/usr/local/php/bin/php-config
make && make install

 

php-config  目录如果不知道, 可以find / -name php-config查找.

 

成功后会出现

Installing shared extensions:     /usr/lib/php5/20121212/

 

然后在php.ini后面配置, 重启之后就可以使用了.

extension_dir = "/usr/lib/php5/20121212/"
extension = memcache.so

 

 

下面是一个例子

<?php
$memcache = new Memcache;             //创建一个memcache对象
$memcache->connect('localhost', 11211) or die ("Could not connect"); //连接Memcached服务器
$memcache->set('key', 'test');        //设置一个变量到内存中,名称是key 值是test
$get_value = $memcache->get('key');   //从内存中取出key的值
echo $get_value;

 

在YIi框架中使用

 

首先进行配置

'components' => [
    'cache' => [
        'class' => '\yii\caching\MemCache',
        'servers' => [
            [
                'host' => 'server1',
                'port' => 11211,
                'weight' => 100,
            ],
            [
                'host' => 'server2',
                'port' => 11211,
                'weight' => 50,
            ],
        ],
    ],
],

 

 

用法

 Yii::$app->cache->set('name', 'ziqing');
  echo Yii::$app->cache->get('name');

 

 

常用函数

Memcache::add //添加一个值,如果已经存在,则返回false
Memcache::addServer // 添加一个可供使用的服务器地址
Memcache::close //关闭一个Memcache对象
Memcache::connect // 创建一个Memcache对象
memcache_debug // 控制调试功能
Memcache::decrement // 对保存的某个key中的值进行减法操作
Memcache::delete //删除一个key值
Memcache::flush // 清除所有缓存的数据
Memcache::get //获取一个key值
Memcache::getExtendedStats //获取进程池中所有进程的运行系统统计
Memcache::getServerStatus// 获取运行服务器的参数
Memcache::getStats //返回服务器的一些运行统计信息
Memcache::getVersion //返回运行的Memcache的版本信息
Memcache::increment //对保存的某个key中的值进行加法操作
Memcache::pconnect // 创建一个Memcache的持久连接对象
Memcache::replace //对一个已有的key进行覆写操作
Memcache::set //添加一个值,如果已经存在,则覆写
Memcache::setCompressThreshold //对大于某一大小的数据进行压缩
Memcache::setServerParams //在运行时修改服务器的参数

 

这里有个坑, 在本地是可以访问memcached的, 但是远程访问需要修改配置文件/etc/memcached.conf, 否则报错.

-l 127.0.0.1
改为本机的IP地址
-l 192.168.1.100 (远程ip)

 

posted on 2017-03-22 17:23  谭兄  阅读(277)  评论(0编辑  收藏  举报