谭兄

导航

< 2025年1月 >
29 30 31 1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31 1
2 3 4 5 6 7 8
统计
 

 

本质上,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   谭兄  阅读(278)  评论(0编辑  收藏  举报
 
点击右上角即可分享
微信分享提示