面试题答案
一键面试Cassandra键缓存常见更新策略
- LRU(Least Recently Used):即最近最少使用策略。当缓存已满,需要淘汰数据时,会选择最长时间未被使用的键值对淘汰。这种策略基于一个假设,即最近使用过的数据在未来更有可能再次被使用,而长时间未使用的数据再次使用的概率较低。
- LFU(Least Frequently Used):最少频率使用策略。它会记录每个键值对的使用频率,当缓存空间不足需要淘汰数据时,优先淘汰使用频率最低的键值对。该策略认为使用频率低的数据在未来使用的可能性也较低。
对一般读写场景下性能的影响
- LRU在读写场景下的性能影响
- 读场景:由于LRU策略倾向于保留最近使用的数据,在具有时间局部性的读模式下,缓存命中率较高。例如,在一些周期性查询相同数据的场景中,LRU能很好地适应,使得频繁读取的数据能一直保留在缓存中,减少磁盘I/O操作,从而提高读性能。然而,如果读模式没有明显的时间局部性,数据访问较为随机,LRU可能频繁地淘汰有用的数据,导致缓存命中率下降,性能降低。
- 写场景:每次写入新数据时,如果缓存已满,可能会淘汰最近最少使用的键值对。如果写入操作频繁且写入的数据与之前读取的数据关联性不大,可能会频繁触发缓存淘汰,影响写性能。但如果写入的数据在后续读取概率较高,LRU策略能将新写入数据保留在缓存中,对后续读操作有益。
- LFU在读写场景下的性能影响
- 读场景:LFU策略依据使用频率来管理缓存,对于访问频率稳定且区分度较大的读工作负载,LFU能有效区分经常访问和很少访问的数据,将高频数据保留在缓存中,提高缓存命中率和读性能。但在一些突发的短期热点数据访问场景下,LFU可能无法及时将这些短期高频数据提升到缓存中,因为它统计的是长期的使用频率,从而影响读性能。
- 写场景:每次写入新数据时,LFU将新数据的使用频率初始化为1。如果写入操作频繁且写入的数据后续很少被读取,这些低频数据会占用缓存空间,导致缓存空间利用效率降低,影响写性能。而如果写入的数据后续会成为高频读取数据,LFU能逐渐将其保留在缓存中,对后续读操作有积极影响。