4
|
Jonatan Littke Yukiup · 技术社区 · 15 年前 |
![]() |
1
5
在这种情况下,这不是更好的逻辑吗?
关键是,只有当你有新的数据时,才用新的数据替换它,不要让旧的数据被自动丢弃。 |
![]() |
2
1
不要在memcached中存储关键数据。它什么也不能保证。 如果您总是需要“最新的好的”缓存,那么您需要将数据存储在任何持久存储中,如数据库或平面文件。 在这种情况下,如果在缓存中找不到任何东西,那么就执行twitter api请求。如果失败了-您从Persistent读取数据。在另一个HTTP请求上,您将再次进行相同的迭代。 或者,您可以将持久性数据放入memcache中,使其具有相当短的生命周期。比如说几分钟(1-5分钟),让Twitter服务器有时间恢复健康。过期后-重复请求。 |
![]() |
3
0
当您将数据放入memcache时,您还将设置缓存的有效时间。因此,理论上,您还可以将创建缓存的时间和/或缓存将到期的时间放在一起。稍后,从缓存中提取之后,您始终可以验证到缓存过期还有多长时间,并决定要做什么。 但是让缓存在用户访问时重新填充在某种程度上仍然是有风险的——比如说,如果您希望在缓存在到期时间前达到大约5分钟时重新填充缓存——并且突然之间,在缓存到期前的最后6分钟内将没有访问者到来——那么缓存仍然会在没有人会让它重新填充。如果您希望始终确保缓存项存在-您需要定期进行检查-例如-生成一个执行缓存检查和填充的cronjob。 |
![]() |
786543214 · Memcached:等待值的超时:等待10000毫秒。节点状态:连接状态ip:port active:true,authed:true,上次读取时间:7060231ms前 1 年前 |
![]() |
Xceptions · Google云正在缓存我的静态文件 7 年前 |
![]() |
Thread7 · memcache出错 7 年前 |
![]() |
Nick M · Rails/Dalli:从另一个命名空间终止片段 7 年前 |
![]() |
ctor · 有限时间存储数据:memcache与mysql 7 年前 |