下面总结几点缓存经验,欢迎吐槽。
一、什么时候要用缓存
1.公共资源(每个用户访问的时候,都是一样的数据)必须要用缓存,比如热帖数据。
2.私有资源(和上面的相反),用户量大,访问量大的,也可以缓存,比如每个用户的基本信息。
二、怎么缓存
1.memcache,等key-value内存缓存
2.文件缓存
三、使用缓存时需要注意的问题
主要对于公共资源的缓存,有如下考虑。
1.能缓存的东西,一般不需要实时刷新数据,能接受有一点延迟。
2.在缓存失效的时候,重新获取数据,保证能够更新。
3.不能让所有用户,在失效的时候,全部都来更新数据,否则在失效这个点,压力骤增,带来雪崩效益。
4.不能让所有缓存,在同一个点失效,同样是为了避免雪崩效应。
四、如何做才能避免上述情况
1.避免所有缓存在同一个点失效
1)在设定的过期时间,加一个一定范围内的随机数(没测试过,不知道效果怎样)。
2.避免失效时的单个雪崩效益
1)memcache缓存:
做备份机制,保证第一个用户去刷新数据,后续用户,去访问备用资源(历史数据);这样做,多出一倍的数据冗余。
2)文件缓存:
比较简单,一般用filemtime,来判断缓存是否过期,在过期的时候,用touch(),更新一下文件的更新时间,后面用户,就不会去刷新数据了。