我需要一种在我的 node.js 应用程序上缓存搜索的方法。我有一个使用 redis 的想法,但我不确定如何实现它。
我想要做的是对要缓存的搜索数量有一个硬性限制,因为我的 RAM 数量有限。对于每次搜索,我想存储搜索查询和相应的搜索结果。
假设我对缓存搜索数量的硬限制是 4。每个搜索查询都是下图中的一个框:
如果有未缓存的新搜索,则新搜索将被推到顶部,而底部的搜索查询将被删除。
但是,如果有一个搜索被缓存,缓存的搜索查询将从其位置删除并添加到缓存的顶部。例如,如果search 3
被搜索。
通过这样做,我使用了相对相同数量的内存,而搜索最多的查询将始终在缓存中浮动,而不太受欢迎的搜索将通过缓存并被删除。
我的问题是,我该怎么做呢?我以为我可以用列表来做到这一点,但我不确定如何检查列表中是否存在值。我还认为我可以使用排序集来做到这一点,我会将集合的分数设置为索引,但是如果搜索查询在缓存中移动,我需要更改每个单独的分数集合中的元素。