1
zhangxiao 2012-10-05 18:42:42 +08:00
redis貌似可以设置expiration的吧,存的时候设置个过期时间就好了
|
2
fire5 2012-10-06 15:04:00 +08:00
个人想法,仅供参考啊
1.规划缓存。 就是那些东西需要放在缓存中。这个在开发初期 其实你应该就需要想明白,用计数器的方式也是一种方式。 如果(频繁访问) db要是能抗住,那么其实cache 紧紧是为了提升性能。 2.数据监控分析那些请求比较频繁,着重优化。 3.缓存预热功能。在高并发访问时候,加入1万请求,同时压到db可能崩溃,那么在应用启动前对 缓存预加载内容也是一种措施。 4.其实访问不频繁的也需要cache的,不过要是变化不大的 ,cache 超时时间设长点。 |
3
fire5 2012-10-06 15:05:35 +08:00
ps 我说的可能只适合网站应用奥。在通俗点 就是 cache命中率的问题。
|
4
YUCOAT 2012-10-06 17:36:13 +08:00
楼上的和我用一样的头像
|
6
huangz 2012-10-07 14:41:04 +08:00 1
这类系统可以用 Redis 的 EXPIRE 命令来实现。
EXPIRE 命令的行为是: 1)在 key 没有设置生存时间时,那么设置 key 的生存时间; 2)如果 key 已经设置了生存时间,那么 EXPIRE 就会更新这个 key 的生存时间(注意更新的方式是覆盖而不是延长)。 根据这一特性,可以在写入时设置数据 key 的生存时间,在读取时更新数据 key 的生存时间:这样在给定时间内被频繁访问的数据就可以一直保存下去,而没人访问的数据就会因为过期而被自动删除。 以一个字符串 key 为例子: def cached_set(key, value) $redis.set(key, value) $redis.expire(key, 5 * 60) end def cached_get(key) $redis.get(key) $redis.expire(key, 5 * 60) end 以上的代码只会保存 key 数据 5 分钟,如果 5 分钟之内有人访问这个 key ,那么 key 的生存时间就会重新设为 5 分钟,只要一直有人访问,就会一直“续期”下去。 至于没人访问的数据,在 5 分钟到期之后,就会自动被删除了。 这应该就能达到缓存热数据的目的了。 最后,使用这种技术时,要记得在更新数据之后刷新缓存,否则会出现缓存过期的现象。 |
7
huangz 2012-10-07 14:44:18 +08:00 1
Tips:将 set/get 命令和 expire 命令包裹在一条事务中,效果更佳。嗯。
|
10
yinhexi 2016-09-05 20:21:08 +08:00
我就是觉得麻烦,每次 get 的时候也要设置过期。很麻烦。
|