我在 ASP.NET 上问过这个问题...
http://forums.asp.net/t/1584731.aspx
...但也想在这里问。我确定这个问题之前已经解决了,所以我想为什么要重新发明轮子……</p>
简短的故事,我正在使用 memcached 作为数据库的缓存层构建具有社交功能的 Web 应用程序。为了简化问题,让我们假设一个基本设置,我们有一个persons 表和一个friendConnection 表,其中persons 包含个人信息,而friendConnection 有两个外键将一个人链接到另一个人,如果他们互相加为好友(我实际上不是使用表或 SQL,但问题类似)
我的缓存过期逻辑很简单:每当发生对表的放置时,都会使缓存中当前存在的与该表相关的所有选择语句过期。然而,这种逻辑在性能方面很糟糕,因为人们不断地相互交友,缓存永远不会持续超过几秒钟。
例如,一个更复杂的逻辑可能会使包含当前引用的朋友的所有选择语句过期,但这将需要获取与friendConnection 表相关的所有选择语句并检查它们的相关性,这也将成为性能负担。
首先,我的问题有意义吗?
其次,人们通常如何解决这个问题?