【问题标题】:Efficiently query Redis高效查询 Redis
【发布时间】:2022-01-04 05:04:55
【问题描述】:

我正在构建一个钱包应用程序,我正在使用 redis 来缓存用户的当前钱包余额。我被要求检索使用该应用程序的所有用户的全部余额的总和。我一直在寻找一种方法来查询 redis 中的这些数据,因为它已经缓存在那里。

我用来保存它们的密钥是user_id-current-balance。有没有办法让我获得所有以-current-balance 结尾的键,然后检索它们持有的所有数据?有没有更好的方法来做到这一点?

【问题讨论】:

    标签: javascript node.js typescript caching redis


    【解决方案1】:

    您可以获取所有匹配的键,然后在循环中对键的值求和。使用以下方法之一获取密钥:

    • KEYS pattern: O(N) 其中 N 是数据库中的键数

      这通常不是一个高性能的解决方案(但如果你的数据库很小,你可以测试查询成本)。

    • SMEMBERS key: O(N) 其中 N 是集合基数

      使用这种技术,您可以在 key 创建一个集合,然后添加每个持有用户余额的键(例如 user_id_1-current-balanceuser_id_2-current-balance 等)。

    【讨论】:

    • 相比KEYSSMEMBERSSCANSSCAN更好,尤其是对于大型数据集。
    猜你喜欢
    • 2014-11-14
    • 2012-06-13
    • 1970-01-01
    • 2011-09-03
    • 2021-01-22
    • 1970-01-01
    • 2011-10-03
    • 2011-09-19
    • 2018-08-19
    相关资源
    最近更新 更多