memcached工作机制学习

来源:互联网 发布:淘宝剩余时间 编辑:程序博客网 时间:2024/06/05 20:44

简介

Memcached是一个自由开源的,高性能,分布式内存对象缓存系统。
Memcached是以LiveJournal旗下Danga Interactive公司的Brad Fitzpatric为首开发的一款软件。现在已成为mixi、hatena、Facebook、Vox、LiveJournal等众多服务中提高Web应用扩展性的重要因素。Memcached是一种基于内存的key-value存储,用来存储小块的任意数据(字符串、对象)。这些数据可以是数据库调用、API调用或者是页面渲染的结果。Memcached简洁而强大。它的简洁设计便于快速开发,减轻开发难度,解决了大数据量缓存的很多问题。它的API兼容大部分流行的开发语言。本质上,它是一个简洁的key-value存储系统。
一般的使用目的是,通过缓存数据库查询结果,减少数据库访问次数,以提高动态Web应用的速度、提高可扩展性。 (来自官网)

这里写图片描述

工作机制

memcached是一套用C语言来实现的软件,全部代码只有2000多行,支持多种语言的API但是守护进程还是只支持C,是一套使用C/S模式的软件。在服务端开启
memcached是一套C/S模式架构的软件,在服务器端启动服务守护进程,可以为memcached服务器指定监听的IP地址、端口号、并发访问连接数、以及分配多少内存来处理客户端的请求的参数,多个服务器端可以协同工作,但这些服务器端之间是没有任何通信联系的,每个服务器只对自己的数据进行管理。应用程序端通过指定缓存服务器的IP地址和端口,就可以连接memcached服务进行相互通信。缓存的数据使用Key/Value键值对的形式保存在服务器端预分配的内存空间中,每个被缓存的数据都有唯一的标识Key,操作其中的数据是通过这个唯一标识Key进行的。缓存到Memcached中的数据仅放置在memcached服务预分配的内存中,而非储存在磁盘中,因此存取速度非常快,使其广泛的在互联网中用于提高web拓展性与性能。由于Memcached服务自身没有对缓存的数据进行持久性存储的设计,因此,在服务器端的memcached服务进程重启之后,存储在内存中的这些数据就会丢失。且当内存中缓存的数据容量达到启动时设定的内存值时,就自动使用LRU(最近最少使用算法)算法删除过期的缓存数据。

memcached支持各种语言编写的客户端API,其中常见的有php 、python、Java、C等

大体的工作机制如图
这里写图片描述

memcached的PHP拓展配置

软件的安装

yum remove `rpm -qa | grep php` #删除原有的冲突的包tar zxf memcache-2.2.5.tgz    #解压下载的memcache文件cd memcache-2.2.5         #进入目录下phpsize               #php编译以后,拓展模块./configure makemake install              #编译yum install memcached.x86_64 -y #安装memcached

然后是对其进行拓展

cd /usr/local/lnmp/php/etc/vim php.ini #将memcache的拓展写到ini文件中

修改如下

870 extension=memcache.so

然后测试是否拓展成功

cd /usr/local/lnmp/php/lib/php/extensions/no-debug-non-zts-20131226/php -m | grep memcache  #检测memcache模块是否拓展

然后进行测试

/etc/init.d/php-fpm reload #重新读取配置文件/etc/init.d/memcached start   #开启memcache服务netstat -ant |grep 11211    #测试memcache的端口11211是否存在

将解压后的memcache文件中的php文件复制到nginx的发布目录下

cd memcache-2.2.5cp example.php /usr/local/lnmp/nginx/html/cp memcache.php /usr/local/lnmp/nginx/html/cd /usr/local/lnmp/nginx/html/vim example.php #修改文件 修改登录信息 与IP端口vim memcache.php  #修改文件
 /etc/init.d/memcached  reload #重新读取配置文件

然后输入IP+/memcache.php 可以看到网页版本的memcached的使用情况。

原创粉丝点击