2013-04-02 28 views
0

我正在用PHP开发电子商务系统。我总是希望向客户显示更新的数据,但是需要内存缓存。 我在计算是否有通用的非过期缓存,并在数据更新时删除缓存。或者那是不好的做法?未到期的缓存

+1

对我来说似乎很合理。危险的部分是潜在提供旧数据。无论更新的来源如何(如果数据库中有多个应用程序,或者如果有人直接手动编辑数据),您必须绝对肯定您的缓存在底层数据得到更新时得到更新。 –

+0

感谢您的输入。我打算在数据库和应用程序之间有一个键/值数据库(比如redis或cassandra)而不是缓存。这可能与memcache一样快,但只有一个项目需要跟踪更新。你怎么看待这个想法? – brasimon

+0

不确定 - 没有尝试过。一般来说,我只使用常规数据库,并且只缓存那些不需要进行即时更新的事情,即使如此,只需缓存生命周期较短(几分钟即可)。一般而言,数据库访问的设计非常快速,因此除非您需要从数据访问中挤出每微秒,否则可能会引入比所需更多的复杂性。现在直接使用数据库可能是值得的,看看是否足够好,以后只有在必要时才会考虑缓存层。 –

回答

0

我在一个相当高的交易拍卖网站上工作,我们不得不做很多缓存来保持网站。

有2种缓存无效的,我们使用:

活动

对于任何事情,改变得很快,我们将使用活动无效。对我们来说,它是在任何特定时刻出价/多少项目成本。我们会无限期地缓存这些信息,当有人出价时,我们会主动清除缓存。

尽管我们将主动吹扫保持为绝对最小值。

另外,您还想确定是否主动清除缓存的对象...确保它只存在于一个地方。尝试搜索所有实例的缓存并将其更改到任何位置都是非常痛苦的。

被动

这是你给的对象的生存时间(TTL),让它在自己的优雅到期。把它用于可能有点陈旧的事情。

我们对95%的数据采用了这种方法,并且效果很好。

与主动失效相比,它的编程也非常简单。


对于主动和被动缓存失效......我不会说任何一个都是不好的做法。