因为使用了memcached, 所以第一次查找的时候把内容缓存到了memcached里面去了,这样第二次查看的时候就是从memcached里面去取,但是有个坏处是可能第一次查找完,立即内容有更新了,所以导致取到的数据不是最新的。
这个问题大家是怎么解决的?
麻烦了。还有:我保存memcached中得超时时间是5秒,但是有时候,超过5s了,内容好像好事从memcached里面取的一样。
大家有遇到这种情况的么?
谢谢
这个问题大家是怎么解决的?
麻烦了。还有:我保存memcached中得超时时间是5秒,但是有时候,超过5s了,内容好像好事从memcached里面取的一样。
大家有遇到这种情况的么?
谢谢
你说的应该是使用了php模板技术了吧。
你缓存的是不是html页面呀还有memcached+php 一般是怎么使用比较好呢
因为我做的像是sns之类的东西,所以动态内容多于静态的,所以假设缓存html的话,那我其实大部分时间都是需要生成新的html的,这样弊大于利, 所以我没有使用模板生成html和缓存html,只是把sql查询的数据缓存了一下。还希望请你说下一些经验和心得呀。
谢谢了
像你说的一样,第一次查找的时候把内容缓存到了memcached里面去,当页面有更新的时候,数据写入数据库的同时,把数据缓存到memcached里,这样就保证了memcached和数据库中数据的一致,也不用你每隔几秒重新缓存一次。
其实我不懂memcached,但我们老大跟我讲过基本的实现原理。
但是你这样的话,这个就成了一个持久缓存了, 和memcached的初衷有点违背了吧。
比如我把一个数据放在memcached里面了,有更新的话,我就去update成最新的,那这个数据就一直
在memcached里面了, 所以还是得通过过期时间这块来解决, 因为用户量很大的话,如果持久化存储,内存使用量就上来了。 这个不好控。
一般大家使用memcached都是怎么使用呀, 因为第一次接触,所以一定不会想的很全面。
麻烦大家谈下自己的一些项目中得经验呀。
测试了,确实是从内存里读取的,但是,速度依然很慢,后来还是通过索引优化,速度才快的,就没用memcached了
$mem = new Memcache;
$mem->set(key,数据,压缩比率,超期时间);//set,replace,add等用法
常规做法有两种:
1.数据有改变则在更新数据库的同时更新memcache
2.数据有改变则数据库有一个字段来标识更新时间,例如update_time。当有查询时候,把memcache里的update_time与数据库的update_time比较。如果发生变化则更新memcache超期时间设置,应根据数据访问的频繁度和内存大小来权衡一下。memcache内存申请后,映像中不会被释放。它是通过 如果有一部分数据超时,则新写入的数据覆盖超时数据来完成重复使用的。那么理论上来讲,内存使用情况是数据被memcache占用最多的那一刻!