Memcached 主要特性

a、数据仅存在于内存中,宕机或重启数据将全部失效

b、内容数据达到启动时设定内存指定值后、基于LRU算法删除缓存,LAZY模式、可指定最大内存用量。

c、实际瓶颈在于网络连接、占应较少的CPU资源

d、服务器端无分布式功能(C开发)、取决于客户端的实现(php、C#、java)、可布署多台服务器,访问时做个均衡策略如根据IP分配连接负 载。

e、存储的节点数据键名250字节、键值限制在1MB、只适合普通字符串、作为小规模的数据分布式平台是十分有效果.

f、32位机器单进程使用最大内存2G、可分多个端口开启多进程支持、64位机器可认为无上限

数据直接放到内存需要解决的问题:

a、不能进行分布式扩展

b、缺乏一个有效的信息过期机制

c、多个并发同时使用共享使用失效机制

d、文件fd无法异步法、无法加入异步IO高速并发访问体系中

Memcached的分布式特点

  • 1:服务器端不关心分布式。
  • 2:依靠客户端来实现分布式 。
  • 3:客户端存储着可以访问到的Memcached服务器列表 。
  • 4:在客户端用算法来保证,对同样key值的数据,读写都操作同一个服务器。

调优方法:

  • 1,f参数:
    factor增长因子,默认为1.25,曾经为2,值越小,slab中chunk size差距 越小,内存浪费越小。1.25适合缓存几百字节的对象。
    建议:计算一下数据的预期平均长度,调整factor,以获得最恰当的设置。

  • 2,n参数:chunk初始值

  • 3,slab尾部剩余空间
    解决办法:规划slab=chunk*n整数倍

  • slab中chunk利用率低:申请的slab只存放了一个Item
    解决办法:规划slab=chunk

  • chunk存储Item浪费
    如Item是100,存到128字节chunk,就有28字节浪费
    解决办法:规划chunk=Item

Memcached 的使用目的

通过缓存数据库查询结果,减少数据库访问次数;还有就是缓存热点数据,以提高Web应用的速度、提高可扩展性。

1, 缓存简单的查询结果:查询缓存存储了给定查询语句对应的整个结果集,最合适缓存那些经常被用到,但不会改变的SQL语句对应查询到的结果集,比如载入特定的过滤内容;

2, 缓存简单的基于行的查询结果;

3, 缓存的不只是SQL数据,可以缓存常用的热点数据,比如页面,以节省CPU时间使用分层的缓存;

4, 特别注意:当数据更新时需要更新缓存;

Memcached 的典型使用场景

想象有这么一个场景,一个电子商务网站,在网站的左侧会是商品的分类,中间是商品搜索结果的列表,可以查看商品信息和商家的基本信息和相关商家的信誉度信息。

在这个场景下,因为一个商场的类别不会经常改变的。实时性不是很高,这样应该放到缓存中取的。

一般时候做法:

执行一次或者多次sql从数据库中查询全站的商品分类---->>递归形成你所需的分类tree------>>进入处理数据------->>显示到页面上。

在使用 memcached做法:

第一次显示的时候:判断memcached缓存中是否有该分类----没有----->执行一次或者多次sql从数据库中查询全站的商品分类----->放到memcached中------->>进入处理数据------->>显示到页面

第二次显示的判断memcached缓存中是否有该分类----有--->>-从memcached中取出数据-------->>进入处理数据------->>显示到页面

 当这个过程首次发生时,数据将正常地从数据库或其他数据源加载,然后再存储到 memcached 内。当下一次访问此信息时,它就会从 memcached 中取出,而不是从数据库加载,节省了时间和 CPU 循环。

但是要是数据中的数据改变怎么来更新memcached中的数据呢

过程为:更新数据库中分类的信息------->找到memcached中key值,删除------>重新插入到你的memcached中就可以了

memcached 内的存储操作是原子的,所以信息的更新不会让客户机只获得部分数据;它们获得的或者是老版本,或者是新版本。

1,分布式应用。

2,数据库前段缓存。

3,服务器间数据共享。

4,变化频繁,查询频繁的数据,但是不一定写入数据库,比如:用户在线状态 。

5,变化不频繁,查询频繁,不管是否入库,都比较适合使用。

Memcached 不适合使用Memcached的场景

1:变化频繁, 一变化就要入库类的应用,比如股票,金融。

2:那些不需要“分布”的,不需要共享的,或者干脆规模小到只有一台服务器的应用,memcached不会带来     任何好处,相反还会拖慢系统效率,因为网络连接同样需要资源。

3:缓存对象的大小大于1MB。

4:key的长度大于250字符。

Memcached优化相关推荐

  1. Memcached哈希性能优化(八)——总结报告

    Memcached哈希性能优化报告 一. Memcached分析 这两个月一直在memcached优化和找工作之间忙着,一边复习一边优化改代码还真是个让人觉得难以忘记的夏天.做这个项目确实收获了很多, ...

  2. Memcached应用总结

    http://my.oschina.net/u/142836/blog/171196 memcached是一款高性能的分布式缓存系统,凭借其简单方便的操作,稳定可靠的性能广泛应用于互联网应用中,这篇文 ...

  3. linux运维/自动化开发__目录

    服务器软件安装 nginx apache php mysql oracle tomcat memcached mongodb sqlserver 常用pc端工具安装使用 Xshell         ...

  4. 宝塔开启ngx_pagespeed加速网站

    本文安装版本宝塔7.4.2,其他版本可能略有不同. ngx_pagespeed这货能干些什么呢?webp.合并js.合并css.压缩html延迟加载等等就是前端优化 的那些个破事.当然会牺牲一点点服务 ...

  5. 阿里云主机安装Memcached扩展优化WordPress

    2019独角兽企业重金招聘Python工程师标准>>> 前言 最近发现阿里云主机在使用中,并发访问量稍大,页面加载速度就很慢.于是学习了一些服务器优化的文章,决定安装Memcache ...

  6. 30分钟3300%性能提升—python+memcached网页优化小记

    前言 本来我一直不知道怎么来更好地优化网页的性能,然后最近做python和php同类网页渲染速度比较时,意外地发现一个好方法:直接像某些php应用比如Discuz论坛那样,在生成的网页中打印出&quo ...

  7. 缓存系统MemCached的Java客户端优化历程

    來源:http://www.infoq.com/cn/articles/memcached-java 作者 岑文初 发布于 2008年9月27日 上午12时38分 社区 Java 主题 集群与缓存 M ...

  8. 宝塔linux优化wordpress,WordPress加速 宝塔面板速度优化方案 Memcached + Redis | 「讲文兄博客」...

    WordPress 网站的速度应该上每个站长必须关注的一个问题,对于刚使用 WordPress 的朋友,优化网站速度是比较困难的事情,找不到好的解决方案.今天就来推荐 WordPress 速度优化方案 ...

  9. 大型网站架构提速关键技术(页面静态化、memcached、Mysql优化)

    大型网站关键技术介绍 1. pv值(page views),访问量大 带来问题 a. 流量大 10000000*2m ->解决方案 买带宽 ,优化程序(处理图片) b. 并发量,同时访问网站的人 ...

最新文章

  1. 对c语言这门课程的认识,一路走来,浅谈c语言的学习感想
  2. Javascript创建数组的方式你了解了吗
  3. Hbase的应用场景、原理及架构分析(转:https://blog.csdn.net/xiangxizhishi/article/details/75388971)
  4. 数据结构--二叉树--路径 假设二叉树采用二叉链表方式存储, root指向根结点,node 指向二叉树中的一个结点, 编写函数 path,计算root到 node 之间的路径,(该路径包括root结
  5. NCPC2018 D.Delivery Delays[二分答案+DP check]
  6. js定时器和linux命令locate
  7. POJ-2349-Arctic Network
  8. android-ndk-aide,NDK安装教程20180605
  9. Java知识导航总图
  10. php数据的导出到excel,php 数据的导出到excel表格-怎么将php数据导出excel
  11. vivox6Android版本,vivo x6有几个版本?vivo x6各版本区别对比评测
  12. Android第二十课 解决Logcat无法输出调试信息
  13. 显卡煲机测试软件,铁三角耳机煲机方法三分钟让您学会煲耳机
  14. MS08067利用方法
  15. 尚学堂浪曦视频学习推荐顺序
  16. [源码解析]ESPnet脚本源码解析-aishell-asr.sh
  17. 拉灯问题(标准答案都是错的!)
  18. 当租房成为一种生活方式
  19. 微信公众平台对接C#-普通消息接收
  20. Matlab图像处理笔记--图像修复

热门文章

  1. [转载]20行Python代码爬取王者荣耀全英雄皮肤
  2. 高级工程师面试 - 其他
  3. matlab用diag直接使用错误_Matlab diag的用法
  4. VM克隆虚拟主机造成MySql的UUID重复问题,解决方案
  5. PTA乙级 1108 String复读机——20分
  6. python barrier_Python中的Barrier对象
  7. 时间序列论文: NeuralProphet: Explainable Forecasting at Scale
  8. eNSP网络构建—配置无线网络
  9. 北卡教堂山计算机专业排名,2019上海软科世界一流学科排名计算机科学与工程专业排名北卡罗来纳大学教堂山分校排名第17...
  10. Error: `brew cask` is no longer a `brew` command. Use `brew <command> --cask` instead.