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