0

我有一个大文件需要加载到缓存中(作为哈希),它将在 perl 进程之间共享。将数据加载到缓存中大约需要 2 秒,但我们每秒有超过 10 次调用。

使用计算方法是否会导致其他进程被锁定?否则,我将不胜感激有关如何管理加载过程的建议,以便在加载期间保证锁定并且只发生一个加载过程!

谢谢!

4

1 回答 1

0

不确定有保证的锁,但您可以使用带有已知键的 memcached 作为互斥锁替代品(在撰写本文时,您还没有说出您的“缓存”是什么)。如果键的值为 false,则将其设置为 true,开始加载,然后返回结果。

对于在此期间发生的请求,您可以等待,或者尝试在 Retry-After 字段中使用503“服务不可用”状态并等待几秒钟。我不确定浏览器对此的支持。

作为奖励,在互斥锁上使用 5 分钟的生存时间将导致整个文件每 5 分钟重新加载一次。否则,如果您出于其他原因重新加载文件,则需要手动删除该密钥。

于 2012-12-19T19:28:44.027 回答