设为首页 收藏本站
查看: 1205|回复: 0

[经验分享] memcached原理详述及配置

[复制链接]

尚未签到

发表于 2018-12-25 11:12:34 | 显示全部楼层 |阅读模式
  如果一个网站流量很大,则查询数据库将会耗费大量时间。如果将经常查询的的数据和对象缓存到内存中,则需要查询数据库时,直接返回内存中缓存的数据。这中静态化方式则会高效很多。分布式缓存系统是为了解决数据库服务器和web服务器直接的瓶颈。其中memcached是一个开源、高性能、分布式的内存对象缓存系统。主要通过在内存中缓存数据和对象减轻数据库的负载来加速动态web程序。内存中缓存的数据通
  过API的方式被存取,数据就像一张大的HASH表,以键-值对方式存在。
  


  

  

  读取
  执行读取操作的顺序是从 Web 层获取请求(需要执行一次数据库查询)并检查之前在缓存中存储的查询结果。如果我找到所需的值,则返回它。如果未找到,则执行查询并将结果存储在缓存中,然后再将结果返回给 Web 层。
  写入
  将数据写入到数据库中时,首先需要执行数据库写入操作,然后将之前缓存的任何受此写入操作影响的结果设定为无效。此过程有助于防止缓存和数据库之间出现数据不一致性。
  
  Memcached采用client/server架构,服务端启动守护进程,等待clent请求到达,采用异步I/O,使用libevenet作为事件通知机制。可以建设多个服务端协同工作,但这些服务端之间并不通信,每个server端对自己的数据进行管理,客户端制定server端IP和端口进行通信。缓存在内存中的数据并不会同步到磁盘上,因此,重启后缓存的数据就会丢失。当缓存数据的总大小达到初始设置值时,就会使用LRU算法删除不用的缓存。
  

  

Memcached采用slaballocation机制分配和管理内存,其原理是将内存分割成各种尺寸的块chunk,Chunk就是用来存储key-value数据的最小单位,把尺寸相同的块分成组(slab class) ,每个slab class的大小可以在memcached启动时制定GrowethFactor控制,默认值为1.25。这些内存块不会释放,可重复利用。


可同过以下命令看到slab class生成过程:
#/usr/local/memcached/bin/memcached -d -f 1.25 -n 50 -vvv -u nobody
slabclass   1: chunk size       104 perslab   10082
slabclass   2: chunk size       136 perslab    7710
slabclass   3: chunk size       176 perslab    5957
slabclass   4: chunk size       224 perslab    4681
slabclass   5: chunk size       280 perslab    3744
slabclass   6: chunk size       352 perslab    2978
slabclass   7: chunk size       440 perslab    2383
slab class   8: chunk size       552 perslab    1899
slabclass   9: chunk size       696 perslab    1506
slabclass  10: chunk size       872 perslab    1202
slabclass  11: chunk size      1096 perslab     956
slabclass  12: chunk size      1376 perslab     762
slabclass  13: chunk size      1720 perslab     609
slabclass  14: chunk size      2152 perslab     487
slabclass  15: chunk size      2696 perslab     388
slabclass  16: chunk size      3376 perslab     310
slabclass  17: chunk size      4224 perslab     248
slabclass  18: chunk size      5280 perslab     198
slabclass  19: chunk size      6600 perslab     158
slabclass  20: chunk size      8256 perslab     127
slabclass  21: chunk size     10320 perslab     101
slabclass  22: chunk size     12904 perslab      81
slabclass  23: chunk size     16136 perslab      64
slabclass  24: chunk size     20176 perslab      51
slabclass  25: chunk size     25224 perslab      41
slabclass  26: chunk size     31536 perslab      33
slabclass  27: chunk size     39424 perslab      26
slabclass  28: chunk size     49280 perslab      21
slabclass  29: chunk size     61600 perslab      17
slabclass  30: chunk size     77000 perslab      13
slabclass  31: chunk size     96256 perslab      10
slabclass  32: chunk size    120320 perslab       8
slabclass  33: chunk size    150400 perslab       6
slabclass  34: chunk size    188000 perslab       5
slabclass  35: chunk size    235000 perslab       4
slabclass  36: chunk size    293752 perslab       3
slabclass  37: chunk size    367192 perslab       2
slabclass  38: chunk size    458992 perslab       2
slabclass  39: chunk size    573744 perslab       1
slabclass  40: chunk size    717184 perslab       1
slabclass  41: chunk size   1048576 perslab       1

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-655635-1-1.html 上篇帖子: 个人memcached演练内容聚集(共11) 下篇帖子: memcached 命令行参数解释
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表