百分百源码网-让建站变得如此简单! 登录 注册 签到领金币!

主页 | 如何升级VIP | TAG标签

当前位置: 网站模板(百分百源码网)>电脑软件>服务器> Memcache缓存系统知识点梳理
分享本文到:

Memcache缓存系统知识点梳理

发布时间:05/16 来源:未知 浏览: 关键词:
Memcached概念:
Memcached是一个免费开源的,高机能的,拥有散布式对象的缓存系统,它可以用来保留一些经常存取的对象或数据,保留的数据像一张庞大的HASH表,该表以Key-value对的方式存在内存中。
官网下载地址: http://www.memcached.org/
运转环境: linux,BSD,windows都可跑
协定理论:http://code.sixapart.com/svn/memcached/trunk/server/doc/protocol.txt (英文)

操纵流程:


1、检查客户端的请求数据是否在memcached中,若有,直接把请求数据返回,不再对数据库进行任何操纵,途径操纵为①②③⑦。

2、要是请求的数据不在memcached中,就去查数据库,把从数据库中获取的数据返回给客户端,同时把数据缓存一份到memcached中(memcached客户端不负责,需要程序明白实现),途径操纵为①②④⑤⑦⑥。
3、每次更新数据库的同时更新memcached中的数据,保证一致性。

4、当分配给memcached内存空间用完之后,会运用LRU(Least Recently Used,最近最少运用)战略加上到期失效战略,失效数据首先被替代,然后再替代掉最近未运用的数据。

Memcached特征:

协定简略
   它是基于文本行的协定,直接通过telnet在memcached服务器上可进行存取数据操纵
基于libevent事件处置
    Libevent是一套应用C开发的程序库,它将BSD系统的kqueue,Linux系统的epoll等事件处置功能封装成一个接口,与传统的select比拟,提高了机能。
内置的内存治理方式
    所有数据都保留在内存中,存取数据比硬盘快,当内存满后,通过LRU算法主动删除不运用的缓存,但没有考虑数据的容灾题目,重新启动服务,所有数据会遗失。
散布式
   各个memcached服务器之间互不通讯,各自独立存取数据,不同享任何信息。服务器并不拥有散布式功能,散布式部署取决于memcache客户端。

Memcached安装与启动:
安装memcached需要先安装libevent

复制代码 代码如下:

Shell>tar zxvf libevent-1.4.14b-stable.tar.gz
Shell>cd libevent-1.4.14b-stable
Shell>./configure
Shell>make && make install

安装memcached
复制代码 代码如下:

Shell>tar zxvf memcached-1.2.5.tar.tar
Shell>cd memcached-1.2.5
Shell>./configure –prefix=/usr/local/memcached
Shell>make && make install

启动memcached
Shell>/usr/local/memcached/bin/memcached –p 11211 –d –u root –P /tmp/memcached.pid

复制代码 代码如下:

-P是表示运用TCP,默许端口为11211
-d表示后台启动一个守护进程(daemon)
-u表示指定root会员启动,默许不能用root会员启动
-P表示进程的pid寄存地点,此处“p”为大写“P”
-l,背面跟IP地址,手工指定监听IP地址,默许所有IP都在监听
-m背面跟分配内存大小,以MB为单位,默许为64M
-c最大运转并发连贯数,默许为1024
-f 块大小增长因子,默许是1.25
-M 内存耗尽时返回差错,而不是删除项,即不用LRU算法


在64位系统中,会报libevent-1.4.so.2文件没法找到,解决办法是把32位目录里的同名文件链接至64位目录中,即像windows那样创立快捷方式。
Shell > /usr/local/lib/libevent-1.4.so.2 /usr/lib64/libevent-1.4.so.2
启动后要是发明没有端口在监听,是由于命动下令时带pid参数的“p”是大写“P”,你可能写成小写了。

下令行直接操纵下令

存,有六个下令项。
复制代码 代码如下:

Set:增加一个新条款到memcached或是用新的数据替代替代掉已存在的条款
Add:当KEY不存在的状况下,它向memcached存数据,否则,返回NOT_STORED相应
Replace:当KEY存在的状况下,它才会向memcached存数据,否则返回NOT_STORED相应
Cas:转变一个存在的KEY值 ,但它还带了检查的功能
Append:在这个值背面插入新值
Prepend:在这个值前面插入新值


取,有两个下令项:

复制代码 代码如下:

Get:取单个值 ,从缓存中返回数据时,将在第一行得到KEY的名字,flag的值和返回的value长度,真正的数据在第二行,最后返回END,如KEY不存在,第一行就直接返回END
Get_multi:一次性取多个值


删除,一个下令:
复制代码 代码如下:
Delete


实例操纵:
先连贯到memcache
复制代码 代码如下:
shell>telnet 127.0.0.1 11211



在入数据

复制代码 代码如下:
Set liuguohua 0 0 21
369369.blog.51cto.com


回车后系统主动保留,并返回正常值STORED
存入下令格局为
<command> <key> <flags> <exptime> <bytes> \r\n
注意在设定bytes字节后,存入的值的长度一定要与之匹配,否则没法保留成功,像liuguohua字段为21字节,所以存入的369369.blog.51cto.com长度为21(总计为21个数字或字母)。


取数据
复制代码 代码如下:
Get liuguohua

回车后,第一行返回VALUE liuguohua 0 21
第二行,返回真正值369369.blog.51cto.com



Memcached的内存算法:

Memcached应用slab allocation机制来分配和治理内存,它按照预先规定的大小,将分配的内存分割成特定长度的内存块,再把尺寸雷同的内存块分成组,数据在寄存时,依据键值 大小去匹配slab大小,找就近的slab寄存,所以存在空间浪费现象。

传统的内存治理方式是,运用完通过malloc分配的内存后通过free来回购内存,这种方式容易发生内存碎片并降低操纵系统对内存的治理效率。



Memcached的缓存战略:

Memcached的缓存战略是LRU(最近最少运用)加上到期失效战略。当你在memcached内存储数据项时,你有可能会指定它在缓存的失效工夫,默许为永恒。当memcached服务器用完分配的内时,失效的数据被首先替代,然后也是最近未运用的数据。在LRU中,memcached运用的是一种Lazy Expiration战略,本人不会监控存入的key/vlue对是否逾期,而是在获取key值时查看记载的工夫戳,检查key/value对空间是否逾期,这样可减轻服务器的负载。

Memcached的散布式算法:
当向memcached集群存入/掏出key/value时,memcached客户端程序依据一定的算法盘算存入哪台服务器,然后再把key/value值存到此服务器中。也就是说,存取数据分二步走,第一步,选中服务器,第二步存取数据。



散布式算法(Consistent Hashing):

选中服务器算法有两种,一种是依据余数来盘算散布,另一种是依据散列算法来盘算散布。
余数算法:
先求得键的整数散列值,再除以服务器台数,依据余数肯定存取服务器,这种要领盘算简略,高效,但在memcached服务器添加或减少时,险些所有的缓存都会失效。
散列算法:
先算出memcached服务器的散列值,并将其散布到0到2的32次方的圆上,然后用一样的要领算出存储数据的键的散列值并映射至圆上,最后从数据映射到的位置开端顺时针查找,将数据保留到查找到的第一个服务器上,要是超过2的32次方,仍然找不到服务器,就将数据保留到第一台memcached服务器上。要是增加了一台memcached服务器,只在圆上添加服务器的逆时针方向的第一台服务器上的键会挨到影响。



Memcache的治理与机能监控:

可以通过下令行直接治理与监控也可通过nagios,cacti等web软件进行监控
下令行:
复制代码 代码如下:

Shell>telnet 127.0.0.1 1211 //要是在启动时指定了IP及端口号,这里要作响应改动
连贯成功后下令
Stats:统计memcached的各种信息
Stats reset:从新统计数据
Stats slabs,显示slabs信息,可以细致看到数据的分段存储状况
Stats items:显示slab中的item数量
Stats cachedump 1 0:列出slabs第一段里存的KEY值
Set|get:保留或获取数据
STAT evictions 0:表示要腾出新空间给新的item而移动的合法item数量

其它常用软件运用:
复制代码 代码如下:

Shell>./Memcached-tool 127.0.0.1:11211
Shell>./Memcached-tool 127.0.0.1:11211 display

Web软件:
复制代码 代码如下:

Memcache.php
Nagios插件
Cacti模块


Memcached与redis比较:



本文出自 “系统网络运维” 博客,请务必保存此出处http://369369.blog.51cto.com/319630/833234

热门标签:dede模板 / destoon模板 / dedecms模版 / 织梦模板
责任编辑:mWJ3D
打赏

打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,你说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

百分百源码网 建议打赏1~10元,土豪随意,感谢您的阅读!

共有151人阅读,期待你的评论!发表评论
昵称: 网址: 验证码: 点击我更换图片
最新评论

本文标签

广告赞助



订阅获得更多模板

本文标签

广告赞助

订阅获得更多模板