高效查询 Redis
Posted
技术标签:
【中文标题】高效查询 Redis【英文标题】:Efficiently query Redis 【发布时间】:2022-01-04 05:04:55 【问题描述】:我正在构建一个钱包应用程序,我正在使用 redis 来缓存用户的当前钱包余额。我被要求检索使用该应用程序的所有用户的全部余额的总和。我一直在寻找一种方法来查询 redis 中的这些数据,因为它已经缓存在那里。
我用来保存它们的密钥是user_id-current-balance
。有没有办法让我获得所有以-current-balance
结尾的键,然后检索它们持有的所有数据?有没有更好的方法来做到这一点?
【问题讨论】:
【参考方案1】:您可以获取所有匹配的键,然后在循环中对键的值求和。使用以下方法之一获取密钥:
KEYS pattern
: O(N) 其中 N 是数据库中的键数
这通常不是一个高性能的解决方案(但如果你的数据库很小,你可以测试查询成本)。
SMEMBERS key
: O(N) 其中 N 是集合基数
使用这种技术,您可以在 key
创建一个集合,然后添加每个持有用户余额的键(例如 user_id_1-current-balance
、user_id_2-current-balance
等)。
【讨论】:
相比KEYS
和SMEMBERS
,SCAN
和SSCAN
更好,尤其是对于大型数据集。以上是关于高效查询 Redis的主要内容,如果未能解决你的问题,请参考以下文章