因为使用了memcached, 所以第一次查找的时候把内容缓存到了memcached里面去了,这样第二次查看的时候就是从memcached里面去取,但是有个坏处是可能第一次查找完,立即内容有更新了,所以导致取到的数据不是最新的。
这个问题大家是怎么解决的?
麻烦了。还有:我保存memcached中得超时时间是5秒,但是有时候,超过5s了,内容好像好事从memcached里面取的一样。
大家有遇到这种情况的么?
谢谢

解决方案 »

  1.   

    你可以在你的url上加个时间戳或随机数。。让每次的url都不同。。就不会缓存了。
      

  2.   

    哦, 也可以,
    你说的应该是使用了php模板技术了吧。
    你缓存的是不是html页面呀还有memcached+php 一般是怎么使用比较好呢
    因为我做的像是sns之类的东西,所以动态内容多于静态的,所以假设缓存html的话,那我其实大部分时间都是需要生成新的html的,这样弊大于利, 所以我没有使用模板生成html和缓存html,只是把sql查询的数据缓存了一下。还希望请你说下一些经验和心得呀。
    谢谢了
      

  3.   

    url上加个时间戳或随机数,这样缓存就不存在
      

  4.   

    楼主,我来告诉你我们网站是怎么使用memcached。
    像你说的一样,第一次查找的时候把内容缓存到了memcached里面去,当页面有更新的时候,数据写入数据库的同时,把数据缓存到memcached里,这样就保证了memcached和数据库中数据的一致,也不用你每隔几秒重新缓存一次。
    其实我不懂memcached,但我们老大跟我讲过基本的实现原理。
      

  5.   

    ls 说的不错一般做法是这样的,,如果有大量查询,更新少的话,你的MEM5S已经差不多更新的很快了,,
      

  6.   


    但是你这样的话,这个就成了一个持久缓存了, 和memcached的初衷有点违背了吧。
    比如我把一个数据放在memcached里面了,有更新的话,我就去update成最新的,那这个数据就一直
    在memcached里面了, 所以还是得通过过期时间这块来解决, 因为用户量很大的话,如果持久化存储,内存使用量就上来了。  这个不好控。
    一般大家使用memcached都是怎么使用呀, 因为第一次接触,所以一定不会想的很全面。
    麻烦大家谈下自己的一些项目中得经验呀。
      

  7.   

    我用了memcached感觉没效果啊
    测试了,确实是从内存里读取的,但是,速度依然很慢,后来还是通过索引优化,速度才快的,就没用memcached了
      

  8.   

    memcached 你怎么使用的?判断一下,把实时更新的数据 跳过memcached缓存不就可以了?
      

  9.   


    $mem = new Memcache;
    $mem->set(key,数据,压缩比率,超期时间);//set,replace,add等用法
    常规做法有两种:
    1.数据有改变则在更新数据库的同时更新memcache
    2.数据有改变则数据库有一个字段来标识更新时间,例如update_time。当有查询时候,把memcache里的update_time与数据库的update_time比较。如果发生变化则更新memcache超期时间设置,应根据数据访问的频繁度和内存大小来权衡一下。memcache内存申请后,映像中不会被释放。它是通过 如果有一部分数据超时,则新写入的数据覆盖超时数据来完成重复使用的。那么理论上来讲,内存使用情况是数据被memcache占用最多的那一刻!
      

  10.   

    据说不是分布式的话就没必要弄什么memcached.还不如优化数据库.数据结构 来得实在点.