我应该使用什么数据结构来缓存有序实体

时间:2014-05-14 01:52:44

标签: caching data-structures

我需要在缓存中存储一​​些项目,比如聊天消息。我还需要在键值范围内切片这些项目。例如(回到聊天消息),最常见的缓存操作是从开始日期到结束日期获取聊天消息。

我应该考虑哪种数据结构?我在想简单的数组,但它适用于O(n)。是否有更快的数据结构?

2 个答案:

答案 0 :(得分:1)

您可以使用像Red-Black Tree这样的自平衡二进制搜索树,它以有序的方式存储条目,并在平均和最差情况下以O(logn)提供插入,删除和搜索。

因此,当您需要在日期间隔之间显示聊天消息时,您可以在RB树中搜索已订购的数据范围。

答案 1 :(得分:0)

使用关联集,将数据存储在array<data>中,但使用哈希表存储pair<data , arrayIndex>。这样你就可以用o(1)搜索,插入和删除。