CentOS 6.5 系统安装及LAMP环境安装(yum方式)配置详解(三)

一、Memcache的安装和测试
1、使用yum工具安装Memcache
yum -y install memcached memcached-devel
因为之前安装php时已经安装过php-pecl-memcache扩展,这里就不需要再装了
CentOS 6.5 系统安装
 安装成功设置开机启动服务 chkconfig memcached on
CentOS 6.5 系统安装
 查看服务是否启动 netstat -tunpl | grep memcached
CentOS 6.5 系统安装
然后可以使用telnet测试连接一下memcache
因为没有telnet先安装
CentOS 6.5 系统安装

连接操作 telnet localhost 11211进行add、set、get操作 
CentOS 6.5 系统安装
2、在php中测试使用memcache:
    //连接
    $mem = new Memcache;
    $mem->connect("127.0.0.1", 11211) or die('Memcache连接失败');
    //保存数据
    $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();
运行结果
CentOS 6.5 系统安装
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
 二 、Memcache组建分布式缓存系统
小型应用只需要在一台服务器上配置缓存就够了,而大型社交类应用需要应对高并发和大数据的处理,所以就需要更多服务器缓存,分布式缓存就是采用多个缓存服务器将任务拆解分开处理。
1、单服务器应用
    //连接
    $mem = new Memcache;
    $mem->connect("127.0.0.1", 11211) or die('连接失败');
    //保存数据
    $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(); 

2、分布式应用
    //连接
    $mem = new Memcache;
    $mem->addserver('192.168.220.12',11211);
    $mem->addserver('192.168.220.13',11211);
    //保存数据
    $mem->set('key1', 'This is first value', 0, 60);
    $mem->set('key2', 'This is second value', 0, 60);
    $mem->set('key3', 'This is third value', 0, 60);
    $mem->set('key4', 'This is forth value', 0, 60);
    $mem->set('key5', 'This is fifth value', 0, 60);
    $val1 = $mem->get('key1');
    $val2 = $mem->get('key2');
    $val3 = $mem->get('key3');
    $val4 = $mem->get('key4');
    $val5 = $mem->get('key5');
    echo "Get key1 value: " . $val1 ."<br />";
    echo "Get key2 value: " . $val2 ."<br />";
    echo "Get key3 value: " . $val3 ."<br />";
    echo "Get key4 value: " . $val4 ."<br />";
    echo "Get key5 value: " . $val5 ."<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();

3、集群问题
Memcache存储数据的原理:
        先把key做一个哈希算法,得到哈希值;哈希值除以memcache服务器个数,取余,得出存放数据的服务器。
一致性哈希原理:
        临时增加一个memcache服务器,则之前key-value存放的服务器就会发生变化,此时取之前的值就会出现问题;此时,我们可以使用一致性哈希原理:每个服务器对应的是一段值,此时增加一个服务器,出现错误的概略会减少,但是,没有办法根治。
内存存储管理:
内存分配:
        Memcache把内存分成大小不同的块,当数据来了后,找到一个最小匹配上块,来存储数据。
内存使用:
        采用CAS(CAS: ClientAssessService)协议,而不是采用锁,解决多并发访问题。
        客户端读取数据时,获得一个CAS-ID,当写入缓存前,先检查客户端CAS-ID和服务器端CAS-ID(最后一个客户端访问时的CAS-ID)是否相同,相同,可以修改,否则,不允许修改,这个和我们使用的版本控制的原理大致是一样的。
内存回收:
Lazy Expiration(惰性检测):
        当用户通过key获取数据时才检查数据是否过期,最长过期时间为30d。
LRU(Least RecentlyUsed):
        算法:近期最少使用算法。闲置内存—》过期内存—》最少使用。
Memcache和Redis的区别:
       都是分布式缓存;官方提供Linux版,但都不提供win版;都可以实现集群的,只不过,Memecache是在客户端设置,而Redis是在服务器端设置;Memcache提供的存储类型单一,Redis提供的类型比较丰富;提供了很多种语言的驱动。
总结:
       Memcache和Redis服务器都是分布式缓存思想的具体化,使用他们,可以使我们的web应用程序高效的被更多的用户使用。

4、安全性考虑
memcache的访问是无用户状态,安全性需要考虑,一般通过放在内网,并通过防火墙限制外网访问memcache端口来达到安全。

5、session应用
通过修改php.ini,可以把session的值放入memcache服务器中:
session.save_handler = files改成session.save_handler = memcached,
session.save_path = "N;MODE;/path"改成 session.save_path = "tcp://127.0.0.1:11211"。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值