memcached

memcached企业应用场景:
一、数据库前端的缓存。
读数据:
开发程序从逻辑上,首先访问(读)memcahced,
若是没有数据在访问mysql。
写数据:
若是写数据,那么再写数据库的同时,
把数据写入到memcached,或者写入到mysql的同时,
由mysql复制到memcached。
Linux运维角色:
搭建memcached服务,提供服务(使用信息问开发)

二、集群后端的共享会话session。
session门票。若是网站内有了这个门票,就能够浏览任意页面。
解决共享会话方案
一、nginx的调度算法ip_hash(缺点:致使负载不均)
二、经过memcahced作共享会话。
三、cookies(放在用户浏览器端)。
优势,能够大并发,缺点:容易篡改,不安全。

参考内容:
http://oldboy.blog.51cto.com/2561410/1331316
http://oldboy.blog.51cto.com/2561410/1323468php

 

搭建memcached服务
一、libevent(epoll模型,libevent做为事件通知机制)。
yum install libevent-devel -y
rpm -qa libevent-develhtml

二、memcached
yum install memcached -y
rpm -qa memcached前端


三、启动服务并检查
[root@db01 ~]# memcached -m 16m -c 2048 -u root -p 11211 -d
[root@db01 ~]# netstat -lntp|grep memcache
tcp 0 0 0.0.0.0:11211 0.0.0.0:* LISTEN 4026/memcached
tcp 0 0 :::11211 :::* LISTEN 4026/memcached node

四、存取数据实践
key--->value健值对
inode--->blockmysql

访问memcached软件,
telnet,nc
yum install telnet nc -ynginx

telnet 127.0.0.1 11211web

[root@db01 ~]# telnet 127.0.0.1 11211
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
set k1 0 0 6
oldboy
STOREDredis

get k1
VALUE k1 0 6
oldboy
END算法

delete k1
DELETED
get k1
END
===============================
[root@db01 ~]# printf "set key008 0 0 10\r\noldboy0987\r\n"|nc 127.0.0.1 11211
STORED
[root@db01 ~]# printf "get key008\r\n"|nc 127.0.0.1 11211
VALUE key008 0 10
oldboy0987
END
[root@db01 ~]# printf "delete key008\r\n"|nc 127.0.0.1 11211
DELETED
[root@db01 ~]# printf "get key008\r\n"|nc 127.0.0.1 11211
ENDsql


服务端:memcached
客户端:memcache

 

memcache客户端

php所在服务器上安装memcache客户端,程序才能访问到memcached。

memcache安装包的连接地址:http://pan.baidu.com/s/1eStd9Uq

tar zxf memcache-2.2.5.tgz
cd memcache-2.2.5
/application/php/bin/phpize
./configure --enable-memcache --with-php-config=/application/php/bin/php-config
make
make install
cd ../
ls -l /application/php-5.5.32/lib/php/extensions/no-debug-non-zts-20121212/


[root@web02 php]# cat /application/nginx/html/blog/a.php
<?php
phpinfo();
?>
经过页面:blog.etiantian.org/a.php检查mc的配置状况。

配置:
vim /application/php/lib/php.ini
extension_dir = "/application/php-5.5.32/lib/php/extensions/no-debug-non-zts-20121212/"
extension = memcache.so
重启Php
pkill php-fpm
/application/php/sbin/php-fpm

再次经过页面:blog.etiantian.org/a.php检查mc的配置状况。
搜索memcache页面内容,若是有结果,表示成功。

开发Php访问memcached代码。
<?php
$memcache = new Memcache;
$memcache->connect('10.0.0.7', 11211) or die ("Could not connect Mc server");
$memcache->set('key', 'oldboy book');
$get= $memcache->get('key');
echo $get;
?>

管理memcached web端
tar zxvfC memadmin-1.0.12.tar.gz /application/nginx/html/blog/
[root@web02 tools]# ll /application/nginx/html/blog/memadmin/

http://blog.etiantian.org/memadmin

控制命中
for n in {1..10000};do printf "get key\r\n"|nc 127.0.0.1 11211;done


memcache内存管理机制
memcache数据过时及删除机制

缓存软件:
memcached同源软件(相同协议)
memcachedb 持久化(放到磁盘),sina开发的。被redis超越了。
TTSERVER 持久化(放到磁盘)
自身主从复制。

memcache自身不支持集群。经过其余方式支持集群。

集群:url_hash算法
ip_hash算法

通常要使用一种算法,一致性hash算法。

相关文章
相关标签/搜索