[Distributed Cache] 的问题

这个图中的Cache Proxy把request forward到对应的partition(也可以称为host),每个host上为什么既有HashTable,又有LRU?我觉得有LRU就可以了啊?

我们设计的时候貌似也支持TTL,那就是这个cache即支持TTL,又支持LRU?LRU里面的key就是我们要存的key,value是什么呢?是slot的地址吗?这里我有点没有弄明白

这里的 LRU 可能有点歧义。指的不是 LRU Cache, 是实现 Least-recently used 用的链表。 我们在最终设计里这个链表也去掉了,随机选多个数据里最老的就可以近似了,也就是你说的 TTL。面试的时候这两种方案可以都将一下,然后讨论取舍就可以了。

谢谢老师的回答,其实这个图是两个方案的结合体,我们实际实现的时候只需要选择一种方案就好了。我再次确认一下。

  1. HashTable + 随机选多个数据里最老的就可以近似了,也就是 TTL
  2. LRU (Cache) 我们可以把 HashTable + LinkedList 组成我们一般意义上的LRU Cache

还有一点我还不是特别明白,HashTable 里面的key就是我们要存的key,value是什么呢?是slot的地址吗?

理解的是对的。
Value 就是具体数据的指针。

HashTable 里面的key就是我们要存的key,value就是value的话,那么这里的slab的slot有什么用呀?

我觉得value应该是slab中slot的地址吧?

对。是 value 的指针,指向 slab 里的 slot。

1 个赞