`
qlma
  • 浏览: 52941 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

memcached应用策略

阅读更多
memcached应用策略(2009-10-22 16:41:20)标签:缓存 策略 down 数据库 命中率 it   分类:实用网文
memcached主要的作用是为减轻大访问量对数据库的冲击,所以一般的逻辑是首先从memcached中读取数据,如果没有就从数据库中读取数据写入到memcache中,等下一次读取的时候就可以从memcached中读取了。但在项目中的具体应用策略(也就是哪些数据应该缓存?怎么样缓存?过期策略?)就是个问题了。它的一个总原则是将经常需要从数据库读取的数据缓存在memcached中。这些数据也分为几类:
一、经常被读取并且实时性要求不强可以等到自动过期的数据。例如门户网站首页最新文章列表、某某排行等数据。也就是虽然新数据产生了,但对用户体验不会产生任何影响的场景。这类数据就使用典型的缓存策略,设置一过合理的过期时间,当数据过期以后再从数据库中读取。当然你得制定一个缓存清除策略,便于编辑或者其它人员能马上看到效果。
二、经常被读取并且实时性要求强的数据。比如用户的好友列表,用户文章列表,用户阅读记录等。这类数据首先被载入到memcached中,当发生更改(添加、修改、删除)时就清除缓存。在缓存的时候,我将查询的SQL语句md5()得到它的hash值作为key,结果数组作为值写入memcached,并且将该SQL涉及的table_name以及hash值配对存入memcached中。当更改了这个表时,我就将与此表相配对的key的缓存全部删除。
三、统计类缓存,比如文章浏览数、网站PV等。此类缓存是将在数据库的中来累加的数据放在memcached来累加。获取也通过memcached来获取。但这样就产生了一个问题,如果memcached服务器down掉的话这些数据就有可能丢失,所以一般使用memcached的永固性存储。
四、活跃用户的基本信息或者某篇热门文章。此类数据的一个特点就是数据都是一行,也就是一个一维数组,当数据被update时(比如修改昵称、文章的评论数),在更改数据库数据的同时,使用Memcache::replace替换掉缓存里的数据。这样就有效了避免了再次查询数据库。
六、session数据,使用memcached来存储session的效率是最高的。memcached本身也是非常稳定的,不太用担心它会突然down掉引起session数据的丢失,即使丢失就重新登录了,也没啥。
总结,通过以上的策略数据库的压力将会被大大减轻。检验你使用memcached是否得当的方法是查看memcached的命中率,有些策略好的网站的命中率可以到达到90%以上。
分享到:
评论

相关推荐

    java_memcached-release_2.5.1

    每一次对于客户端的性能提升,总会给服务集成平台性能带来不小的影响,但是每一次优化速度后,客户端可以优化的空间越来越小,这时候需要一些策略来配合,提升应用整体性能。当前主要采用了以下几点策略:

    php下Memcached入门实例解析

    现在你已经知道了,memcahced 是被设计为减轻数据库教程端压力的,但是你最好能制定一个良好的策略,来想办法让 memcached 来尽可能的缓存那些最影响性能的查询,你可以试着为应用中的所有查询做一些执行时间日志,可以...

    goRubu:一个用Go编写的URL缩短器,具有基于Mongo的后端,基于Prometheus和Grafana的监视,基于Memcached的直写式缓存。 整个应用程序也被docker化

    支持Memcached使用基于LRU的逐出策略对Hot url进行缓存,并通过缓存机制类型进行写入。 缓存后,URL重定向的读取延迟减少了 。 使用Travis CI添加CI / CD管道。 Docker化了整个应用程序。 使用Docker compose绑定...

    NoSQL数据库笔谈.pdf

    软件篇 亚数据库 MemCached 特点 内存分配 缓存策略 缓存数据库查询 数据冗余与故障预防 Memcached客户端(mc) 缓存式的Web应用程序架构 性能测试 dbcached Memcached 和 dbcached 在功能上一样吗? 列存系列 ...

    本地缓存之王Caffeine 保姆级教程(值得珍藏)

    对于Java开发者来说,有很多常用的缓存解决方案,例如EhCache和Memcached等。这些解决方案的核心目标是提高系统吞吐量,减轻数据库等持久层的压力。 根据其部署和应用范围,缓存可以分为本地缓存和分布式缓存两种...

    基于SSM的图书管理系统.zip

    性能优化:为了提高系统的性能和响应速度,本系统在以下方面进行了优化:采用缓存技术:利用Redis或Memcached等缓存技术,减轻数据库的压力,提高数据的读取速度。数据库优化:针对数据库表设计、索引策略等方面进行...

    大数据云计算技术系列 NoSQL数据库学习教程(共71页).pdf

    4 缓存策略 4 缓存数据库查询 4 数据冗余与故障预防 4 Memcached客户端(mc) 4 缓存式的Web应用程序架构 4 性能测试 4 dbcached 4 Memcached 和 dbcached 在功能上一样吗? 4 列存系列 4 Hadoop之Hbase 4 耶鲁大学之...

    架构设计方案

    2)采用高效的网络文件共享策略,采用图片服务器来实现页面的图片存储。 2.1.4不同网络用户访问考虑 1)通过引入CDN来解决不同网络服务商的接入速度问题,一般只能解决静态页面的访问问题。 在不同运营商机房部署...

    java面试最全八股文

    取舍策略 BASE理论 基本可用 最终一致性 小结: 与NoSQL的关系编辑 CAP的是什么关系 为什么会是这样 选择权衡 延伸 分布式系统的典型应用 分布式事务、分布式锁 常用的分布式事务解决方案介绍有多少种? 一、一致性...

    NoSQL数据库笔谈

    Memcached 和 dbcached 在功能上一样吗? 列存系列 Hadoop之Hbase 耶鲁大学之HadoopDB GreenPlum FaceBook之Cassandra Cassandra特点 Keyspace Column family(CF) s ebug . ...

    高性能高并发服务器架构大全

     资料收集:高并发 高性能 高扩展性 Web 2.0 站点架构设计及优化策略 243  CommunityServer性能问题浅析 250 鸡肋式的多站点支持 250 内容数据的集中式存储 250 过于依赖缓存 250 CCS的雪上加霜 250 如何...

    后端开发开发技巧总结与入门常用的技巧总结.docx

    缓存策略:在合适的地方引入缓存机制(如Redis、Memcached)提高系统性能。 分页与批量处理:对于大数据量的处理,采用分页或流式处理,减轻服务器压力。 服务化架构:采用微服务架构,将复杂系统拆分为多个独立可...

    HDPHP v141221

    速度非常快采用 MVC 设计模式URL全站路由控制支持Memcached、Redis等NoSql高效的HDView模板引擎拥有全范围的类库通过自定义类库、辅助函数来实现框架的扩展JS前端自动验证PHP自动验证、自动完成、字段映射、表单令牌...

    最全面的门户网站架构设计方案.doc

    3) 采用Oscache实现页面缓存,采用Memcached实现数据缓存 4) 采用独立的图片服务器集群来实现图片资源的存储及WEB请求 2.1.3 数据存储的设计思路 1) 数据库拆分,把生产数据库和查询数据库分离,对生产数据库采用RAC...

    后盾网HDPHP框架 2014.12.zip

    优化ViewModel模型特点:* 全面的WEB开发特性支持* HDPHP是否完全免费的,你不用担心任何版权问题* 提供多项优化策略,速度非常快* 采用 MVC 设计模式* URL全站路由控制* 支持Memcached、Redis等NoSql* 高效的HDView...

    HDPHP v141221.zip

    后盾网HDPHP框架是一个为用PHP程序语言编写网络应用程序的人员提供的软件包。 提供强大的、完整的类库包,满足开发中的项目需求,可以将需要完成的任务代码量最小化,大大提高项目开发效率与质量。高效的核心编译处理...

    全新:九年双11:互联网技术超级工程

    6. 算法:智能交互(商品搜索是带交互的商品推荐,还有商品推荐(关键字推荐))、语义搜索、智能匹配、搜索策略 7. 语义搜索(解决关键字和商品内容之间的语义鸿沟):query tagging和改写、query改写、商品内容和...

    亮剑.NET深入体验与实战精要2

    15.4.9 Memcached——分布式缓存系统 560 15.4.10 Cacheman——.NET架构 下的分布式缓存项目 561 15.5 数据库访问性能优化 562 15.5.1 选择合适的.NET数据供应器 563 15.5.2 及时地关闭数据库连接 563 15.5.3 跟踪...

    亮剑.NET深入体验与实战精要3

    15.4.9 Memcached——分布式缓存系统 560 15.4.10 Cacheman——.NET架构 下的分布式缓存项目 561 15.5 数据库访问性能优化 562 15.5.1 选择合适的.NET数据供应器 563 15.5.2 及时地关闭数据库连接 563 15.5.3 跟踪...

    服务器运维工程师的主要职责.docx

    2、对系统常见应用软件有运维能力,如nginx、mysql、lvs,memcached、redis、tomcat、dns等,能够快速实施部署、配置及排错; 3、熟悉Docker、K8s等容器技术,有Docker集群实际维护经验; 4、能够独立维护大中型...

Global site tag (gtag.js) - Google Analytics