我知道MRU的算法及其反向最近最少使用(LRU)。
我认为LRU是合理的,因为LRU元素意味着它将来至少可以使用。但是,MRU元素意味着将来很有可能使用该元素,为什么要逐出它?什么是合理的情况?
想象一下,当他们到达公共汽车站时,根据他们的公交车号码(或您使用的任何标识符)查看公交车的详细信息。
考虑到如果你刚刚看到36号公共汽车,你不太可能看到另一辆公共汽车,而不是看到停在那里的其他公共汽车。
只是一个例子,但这个想法更为笼统:在某些情况下,“只是看到一些东西”是一个很好的指标,你很快就不会再看到同样的东西了。
用例是当您多次迭代相同(大于缓存)数据时,因此您将不会返回最近访问过的数据.1
我认为@Jon Skeet和@Jeremiah Willcock的答案都在描述使用MRU作为一种避免使用无用条目来缓存缓存的方法。
在不污染缓存的情况下进行扫描的更好的MRI替代方案是:
对于它的价值,我想不出任何不符合这种一般模式的MRU用例。
顺便提一下,由于聚集效应,@ Jon Skeet的公交车到达的例子并不总是在现实中得到证实。
假设您正在为音乐会缓存大厅的座位,以加快预订。当您的应用程序预订座位时,请从缓存中删除缓存的项目,因为预订应用程序不再需要它们。