【问题标题】:How to setup popular rank for keys in Redis?如何在 Redis 中设置键的流行排名?
【发布时间】:2015-09-18 22:45:17
【问题描述】:

刚开始使用 Redis 并将其整合到 Node+Express 应用程序中。

我目前正在使用 Redis 存储第三方 API 结果以减少我的应用发出的请求。

示例:用户搜索“California”,我的应用程序检查此查询是否已存在于 Redis 数据库中,如果存在则获取相关的 JSON 对象。如果没有,Redis 设置键(查询)和值(来自第三方 API 的 JSON 对象)。

我希望能够对所做的查询进行排名。假设“加利福尼亚”搜索了 4 次,而“蒙大拿”只搜索了一次——我想返回“加利福尼亚”。

为最受欢迎的搜索键收集排名的最佳方法是什么?

我能找到的最接近的是this,但排序集似乎不允许键 AND 值。这只是一个值和分数。

【问题讨论】:

    标签: node.js search redis ranking


    【解决方案1】:

    使用排序集对键进行排序,然后使用辅助散列来存储值。示例:

    ZADD myzset 4 "california" 1 "montana"
    HSET myzset:aux_hash "california" "some api result"
    HSET myzset:aux_hash "montana" "some other api result"
    

    然后,如果有更多搜索发生在加利福尼亚,例如,使用 ZINCRBY 来提高其得分:ZINCRBY myzset 1 "california"

    最后,当用户查询某些东西时,检查它是否在myzset 中(ZSCORE myzset "california" - 验证这不是 nil)。如果存在,只需从辅助哈希 (HGET myzset:aux_hash "california") 中获取值并将其返回给用户。对于最后两个步骤,您可以将它们放入 Lua 脚本中,以便只访问服务器一次并加快速度,如果您愿意的话。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-04-06
      • 1970-01-01
      相关资源
      最近更新 更多