0

我需要一个持久缓存,它最多可容纳数百万个 6 个字符的 base36 字符串并具有以下行为: - 当客户端从缓存中检索 N 个字符串时,它们按 base36 值的顺序检索,例如 AAAAAA 然后 AAAAAB 等。 - 当字符串检索它们也会从缓存中删除,因此其他客户端将不会收到相同的字符串。

我目前使用 MapDB 作为我的持久缓存(我会使用 EHCache,但它需要持久存储许可证)。

MapDB 给了我一个 Map ,我可以从中放置/获取元素,它处理持久化到磁盘。

我注意到 Java 的ConcurrentSkipListMap类会对我的问题有所帮助,因为它提供了排序,而且我还可以调用该pollFirstEntry方法来按顺序检索/删除元素。

我不确定如何将它与 MapDB 一起使用。有没有人有任何建议可以帮助我实现我所概述的行为?

谢谢

4

1 回答 1

1

您所描述的听起来不像大多数人认为的缓存。缓存本质上是一个共享映射,键映射到值,并且您永远不会在读取时删除,因为您希望缓存包含最受欢迎的项目(这就是它的用途)。

您所描述的(订购的项目集,由客户以固定顺序消费)更像是一个工作队列。与其查看缓存解决方案,不如尝试使用 RabbitMQ、Kafka、bigqueue等持久队列。

于 2016-10-17T21:39:06.033 回答