如何理解缓存时间的合理性

在我面前跪下 发布于 2015/05/07 17:46
阅读 613
收藏 3

缓存在实际项目中运用的很多,那么问题来了,在设置了过期时间的情况下,如何合理的设置ttl,一般是为了降低db压力

10小时,1小时,10分钟:在不考虑业务的情况下,大家认为选什么(有好的文章地址可以贴出来)

我先来:10分钟



加载中
1
魔力猫
魔力猫
没有绝对的大小。完全要看这些数据的更新周期,来确定一个最平衡的数值。如果是某些永远也不会改的基础表,那么缓存周期完全可以是永久。
1
orangleliu
orangleliu
没有业务场景没法看,。。
0
whaon
whaon
你要考虑更新
0
傲罗
傲罗
看具体情况吧
0
loyal
loyal

这个要看具体情况,比如你系统的配置.可以是按天算,当修改配置隔天生效就免代码啦.

比如有些字典数据,一辈子都不变的,就可以永久了...

比如一些环境的东西,一旦部署完了就不会改了,就永久了~

0
cnDavidChen
cnDavidChen

一般文章,介绍神马的,发布了几乎不会更新,而且访问量又大,可以考虑设置久一点。比如4小时。

还要考虑在每天访问量最大的时间段,更新时间再拉长一点。

有些像保留关键字,IP白名单,IP地区映射等等,几乎不会改变,那就不要过期咯。

0
方棱
方棱
没发生问题,或者没发现问题,即为合理。
0
中山野鬼
中山野鬼
楼主建议你换个角度,思考这个问题,或许能容易有明确的答案。“去掉缓存,咋设计?”或者说“为什么需要缓存”。
中山野鬼
中山野鬼
回复 @eechen : 看来你没听懂我在说什么,哈。
eechen
eechen
楼主说了,用缓存是为了减轻数据库压力.去掉缓存的话就直接操作数据库,逻辑上更简单.
0
eechen
eechen
比如门户网站里的新闻,内容页面可以缓存成HTML(因为几乎不再改动了),评论可以在页面加载后通过AJAX异步获取,评论内容可以用Memcached/Redis来缓存。

这里提一下分页数据缓存策略:
SQL查出该分页下的记录ID数组,然后遍历该数组,循环从Memcached/Redis中取出对应内容.在更新操作时,只要更新对应ID的Memcached/Redis缓存就能保持实时性.

前10条记录: select * from posts limit 0,10 (offset为0,可以省略)
第11至20条记录: select * from posts limit 10,10
第21至30条记录: select * from posts limit 20,10 (20是起始位置,10是步幅)
公式: limit (当前页数-1)*每页条数, 每页条数
select * from posts limit ($page-1)*$page_size, $page_size;

MySQL limit分页优化(其中id是posts表自增主键):
select id,title,content from posts order by id desc limit 100000,20
扫描100020行,扔掉前面的100000行,返回最后的20行,速度慢.
select id,title,content from posts where id > 100000 order by id desc limit 0,20
只用扫描20行,速度快得多.其中100000和20可以用上面提到的公式算出.
0
在我面前跪下
在我面前跪下
还是要结合业务来进行设置合适的ttl
返回顶部
顶部