`
qlma
  • 浏览: 53621 次
  • 性别: 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应用详解.docx

    【Java环境下Memcached应用详解】 Memcached是一款高性能的分布式内存对象缓存系统,常用于缓解数据库的压力,提高网站性能。在Java环境下,Memcached能够作为集群环境下的缓存解决方案,适用于处理大量数据并需要...

    Memcached_程序与php中应用

    **Memcached程序与PHP中的应用** Memcached是一种高性能的分布式内存对象缓存系统,用于减少数据库负载,提高...同时,配合`学习文档Url.txt`中的指南,开发者可以更深入地理解和掌握Memcached在实际项目中的应用。

    java环境下Memcached应用详解

    Java环境下Memcached应用详解 Memcached是一款高性能、分布式内存对象缓存系统,广泛应用于Web应用中,用于减轻数据库的负载,提高数据访问速度。在Java环境下,我们可以利用各种客户端库来与Memcached服务器进行...

    memcached安装及java应用使用memcached

    “memcached安装及java应用使用memcached”这一标题暗示了我们要讨论的是一个关于分布式内存缓存系统——memcached的安装过程以及如何在Java应用程序中使用它。Memcached是一个高性能、轻量级的分布式内存对象缓存...

    memcached各种序列化策略之session共享

    标题提到的"memcached各种序列化策略之session共享",意味着本文将探讨如何在Memcached中使用不同的序列化方法来共享Web应用中的session数据。Memcached是一个高性能、分布式内存对象缓存系统,常用于减轻数据库负载...

    memcached 安装应用等

    【memcached 安装应用详解】 `memcached`是一个高效且分布式的内存对象缓存系统,主要用于缓解数据库的检索压力,提升网站访问...在实际应用中,可以结合不同的业务需求,通过调整参数和策略,实现更优的性能表现。

    Memcached缓存机制 用好Cache,优化应用

    **Memcached缓存机制——优化应用的关键** Memcached是一款高性能的分布式内存对象缓存系统,广泛应用于Web应用中,用于缓解数据库的负载,提高数据访问速度。它通过将数据存储在内存中,使得数据访问几乎达到内存...

    memcached服务器端memcached.exe 下载

    Memcached是一款高性能、分布式内存对象缓存系统,常用于减轻数据库负载,提高Web应用的性能。它通过在内存中存储数据来快速访问,避免了反复读取硬盘上的数据,从而提高了应用程序的响应速度。 标题“memcached...

    PHP MemCached 高级缓存应用代码

    Memcached是一种高性能、分布式内存对象缓存系统,它通过减轻数据库负担来加速动态Web应用程序的速度,提高可扩展性。其工作原理是将数据存储在内存中,提供快速的数据访问速度,尤其是在高并发场景下,能够显著提升...

    memcached整合hibernate资源合集

    Memcached和Hibernate是两种在IT领域中广泛应用的技术。Memcached是一种高性能的分布式内存对象缓存系统,用于减轻数据库负载,提高应用程序的响应速度。而Hibernate则是一个Java持久化框架,它简化了数据库与Java...

    PHP100视频教程74:PHP.MemCached.高级缓存应用.rar

    大型应用可以配置多个Memcached实例,并根据业务逻辑进行数据分片,分散负载。 3. 选择合适的缓存策略: 根据数据访问模式,可以选择LRU(Least Recently Used)或LFU(Least Frequently Used)等淘汰策略。 六、...

    Memcached 原理和使用详解

    1. **基于C/S架构**:Memcached采用客户端-服务器模型,客户端应用程序通过网络发送请求到Memcached服务器,服务器处理请求并返回结果。这种架构使得Memcached易于部署和扩展。 2. **简单的协议**:Memcached使用...

    python-memcached python-memcached

    3. **缓存失效策略**:Python-memcached提供了两种缓存失效策略:时间戳和“永不超时”。时间戳允许你为每个键设置一个过期时间,当超过这个时间后,数据将被自动删除。而“永不超时”意味着数据在服务器上永久存在...

    memcached.exe及memcached.dll

    4. **缓存淘汰策略**:由于内存有限,当存储空间满时,Memcached会根据LRU(Least Recently Used)最近最少使用原则,自动淘汰不常访问的数据。 **二、Memcached.exe和Memcached.dll** 1. **memcached.exe**:这是...

    memcached安装包以及java所需的memcached架包

    **memcached** 是一款高性能、分布式内存对象缓存系统,广泛应用于Web应用中,用于减轻数据库负载,提高数据访问速度。它将数据存储在内存中,以键值对的形式提供快速的数据检索服务。memcached的设计目标是简洁和...

    .net memcached 分布式缓存应用类库

    .NET Memcached 分布式缓存应用类库是用于在.NET环境中高效实现分布式缓存功能的工具,它基于开源的Memcached系统,旨在提高应用程序的数据访问速度和减轻数据库服务器的压力。Memcached是一个高性能、分布式内存...

    memcached-1.5.11.tar.gz

    Memcached,一个高性能、分布式的内存对象缓存系统,广泛应用于Web应用中,用于减轻数据库的负载,提高数据访问速度。本文将深入探讨Memcached的1.5.11版本,解析其核心特性与工作原理。 一、Memcached简介 ...

    memcached全面剖析.pdf

    memcached是一款高性能、分布式内存对象缓存系统,最初由Danga Interactive开发,用于减少数据库负载,通过缓存数据和对象来加速Web应用程序。它以key-value的形式存储数据,支持多种编程语言,如Perl、PHP、Python...

Global site tag (gtag.js) - Google Analytics