这里有很多关于缓存无法正常工作的问题,或者询问如何正确实现缓存,从HTTP到SQL查询,L1 / L2内存缓存等等各种各样的事情。
它通常被认为是计算机科学术语中的一个难题吗?
答案 0 :(得分:4)
“计算机科学只有两件事:缓存失效和命名事物。” - Phil Karlton
答案 1 :(得分:2)
我不知道实现缓存是否真的被认为是一件困难的事情,但我怀疑大多数人确实没有真正测试它们以确保它能够正常工作,而且实际上缓存它应该做的工作。实现缓存的问题在于,如果你弄错了,除非你正在监视缓存未命中并比较性能,否则你甚至都不会知道,因为缓存失败只会“失败”,直到后备存储。那么如果缓存具有100%的未命中率,它只会使默认情况下的速度慢1%。
答案 2 :(得分:1)
我认为问题在于决定您希望缓存如何运作?例如你用什么策略驱逐(最近最少使用等)。它会分发等吗?你想优化缓存命中等吗?复杂性是基于这些问题。
简单的进程内缓存可能很简单。通常我不必实现这些,因为你可以获得大多数平台的现成实现,我会犹豫重新发明轮子(我认为你的问题是关于实施的难度,而不是问你是否应该自己创造一个)
答案 3 :(得分:1)
我认为许多程序员所面临的困难在于限制自己为应用程序编写缓存软件。值得记住的是,现代操作系统alrerady为您做了大量的缓存,而自己实现它可能是一个非常小的问题。
答案 4 :(得分:1)
直到你在一个非常重要的情况下尝试它。
答案 5 :(得分:1)
我认为无论任务如何,如果需要并发访问困难只是:控制并发访问。这只会导致严重的问题,例如死锁,访问序列化,并发性限制等。