Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1650496
  • 博文数量: 63
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 646
  • 用 户 组: 普通用户
  • 注册时间: 2015-05-26 18:02
个人简介

祸兮福之所倚,福兮祸之所伏

文章分类

全部博文(63)

文章存档

2020年(11)

2019年(10)

2017年(10)

2016年(25)

2015年(7)

我的朋友

分类: 架构设计与优化

2015-07-13 11:20:16

     memcache的现今架构设计中不可或缺的一环,主要功能是缓解数据库的读取压力,缓存查询结果。官方定义是

Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.

Memcached is an in-memory key-value store for small chunks of arbitrary data (strings, objects) from results of database calls, API calls, or page rendering.

Memcached is simple yet powerful. Its simple design promotes quick deployment, ease of development, and solves many problems facing large data caches. Its APIis available for most popular languages.
      Memcached是一款开源、高性能、分布式内存对象缓存系统,可应用各种需要缓存的场景,其主要目的是通过降低对Database的访问来加速web应用程序。它是一个基于内存的“键值对”存储,用于存储数据库调用、API调用或页面引用结果的直接数据,如字符串、对象等。
      可以说memcached可以兼容大部分主流语言,现今的主流网站如twitter,youtube等都采用了memcached。
     1. 简单key/value存储:服务器不关心数据本身的意义及结构,只要是可序列化数据即可。存储项由“键、过期时间、可选的标志及数据”四个部分组成;
      2. 功能的实现一半依赖于客户端,一半基于服务器端:客户负责发送存储项至服务器端、从服务端获取数据以及无法连接至服务器时采用相应的动作;服务端负责接收、存储数据,并负责数据项的超时过期;
    3. 各服务器间彼此无视:不在服务器间进行数据同步;
    4. O(1)的执行效率
    5. 清理超期数据:默认情况下,Memcached是一个LRU缓存,同时,它按事先预订的时长清理超期数据;但事实上,memcached不会删除任何已缓存数据,只是在其过期之后不再为客户所见;而且,memcached也不会真正按期限清理缓存,而仅是当get命令到达时检查其时长;


Memcached提供了为数不多的几个命令来完成与服务器端的交互,这些命令基于memcached的协议实现。


存储类命令:set, add, replace, append, prepend
获取数据类命令:get, delete, incr/decr
统计类命令:stats, stats items, stats slabs, stats sizes
清理命令: flush_all

安装memcached
 
memcached安装以来与libevent 首先安装libevent,下载官网 />  [root@node1 tony]# tar -xf libevent-2.0.22-stable.tar.gz 
 [root@node1 tony]# cd libevent-2.0.22-stable
[root@node1 libevent-2.0.22-stable]# ./configure --prefix=/usr/local/libevent
[root@node1 libevent-2.0.22-stable]# make && make install


编译安装完成
安装memchached 
官网下载最新版本memecached
[root@node1 Downloads]# wget files/memcached-1.4.24.tar.gz
[root@node1 Downloads]# tar -xf memcached-1.4.24.tar.gz 
[root@node1 Downloads]# cd memcached-1.4.24
[root@node1 memcached-1.4.24]# ./configure --prefix=/usr/local/memcached --with-libevent=/usr/local/libevent/
[root@node1 memcached-1.4.24]# make && make install

ok安装完成

进入memcached主目录
[root@node1 memcached]# ls
bin  include  share
[root@node1 memcached]# cd bin/
[root@node1 bin]# ls
memcached
memcached比较简单只有一个命令
查看帮助命令,常用的选项有以下几个
-l :指定进程监听的地址;
-d: 以服务模式运行;
-u :以指定的用户身份运行memcached进程;
-m :用于缓存数据的最大内存空间,单位为MB,默认为64MB;
-c :最大支持的并发连接数,默认为1024;
-p : 指定监听的TCP端口,默认为11211;
-U :指定监听的UDP端口,默认为11211,0表示关闭UDP端口;
-t :用于处理入站请求的最大线程数,仅在memcached编译时开启了支持线程才有效;
-f :设定Slab Allocator定义预先分配内存空间大小固定的块时使用的增长因子;
-M:当内存空间不够使用时返回错误信息,而不是按LRU算法利用空间;
-n: 指定最小的slab chunk大小;单位是字节;
-S: 启用sasl进行用户认证;


memcahced的命令行工具可使用telnet连接11211端口进行通信操作
使用最简单的/usr/local/memcahced/bin/memcached -u nobody -d 启动memcached其他参数默认
[root@node1 bin]# netstat -tunlp | grep memcached
tcp        0      0 0.0.0.0:11211               0.0.0.0:*                   LISTEN      10181/memcached     
tcp        0      0 :::11211                    :::*                        LISTEN      10181/memcached     
udp        0      0 0.0.0.0:11211               0.0.0.0:*                               10181/memcached     
udp        0      0 :::11211                    :::*                                    10181/memcached     
查看memcahced服务已启动
[root@node1 bin]# telnet localhost 11211
Trying ::1...
Connected to localhost.
Escape character is '^]'.
stats
STAT pid 10181
STAT uptime 133
STAT time 1436754534
STAT version 1.4.24

进入接口使用stats就可查看当前服务状态
使用add等命令就可以增加一个键等等

安装php支持memcache  下载地址我用的是rpm包安装的php程序,源码安装要指定源码路径
[root@node1 memcache-2.2.7]# tar -xf memcache-2.2.7.tgz 
[root@node1 memcache-2.2.7]# cd memcache-2.2.7

[root@node1 memcache-2.2.7]# /usr/bin/phpize 
Configuring for:
PHP Api Version:         20090626
Zend Module Api No:      20090626
Zend Extension Api No:   220090626
[root@node1 memcache-2.2.7]# ./configure --with-php-config=/usr/bin/php-config --enable-memcache

make && make install 
安装完最后一行出现Installing shared extensions:     /usr/lib64/php/modules/
编辑/etc/php.d/memcahce.ini加入extensions不过我发现源码的php会自动创建编辑这个文件
ok安装完成php对memcahed的扩展

用测试页查看是否支持memcached
    
只要看到这个就ok

但是通常用命令行可能不会是很方便,于是就有memadmin这个基于gui的图形化管理工具
memadmin安装也很简单,下载解压后复制到相应的web目录下
cp -r memadmin /usr/local/nginx/html/
[root@www memadmin]# ls
apps  config.php  images  include  index.php  langs  LICENSE.txt  README.txt  views
直接浏览器中访问就可以访问


这样安装完成可以在图形界面中做memcahced相关操作了。



       



   感谢马哥教育()提供的精湛的技术总结。
阅读(3303) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~