按计数对字符串进行排序的 Redis 建模

标签 redis

我一直在像这样存储和递增下载计数器:

INCRBY downloads:<filename> 1

但现在我想要下载:* 按值排序,以便显示热门下载列表。

我觉得我可以更好地存储它。我愚弄了:

ZINCRBY downloads 1 <filename>
ZREVRANGEBYSCORE downloads +inf -inf

这似乎确实为我提供了我想要的排序列表(最多下载到最少),但它只返回 <filename> .看来我必须单独查询计数。

基本上,在 SQL 术语中,如果可以的话:

select filename, count(*) from downloads

我如何构造我的 Redis 数据以使该查询成为可能/容易?

最佳答案

您可以使用 ZREVRANGE z 0 -1 WITHSCORES 获取顶级电影,这也会返回分数。

此外,这还允许您在上述命令中使用“N-1”而不是“-1”轻松获得“TOP N”部电影。

关于按计数对字符串进行排序的 Redis 建模,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8670845/

相关文章:

ubuntu - 从 Redis 检索大型数据集

ruby-on-rails - 如何从匹配模式的redis列表中删除键?

python - 如何使用 pyramid_sockjs 的消息传递?

caching - ElastiCache 维护时段可用性

java - redis如何dump到多个文件而不是一个文件?

ruby-on-rails - Redis 寻找 env redis url 变量不确定将 env 变量放在哪里 坏 URI(不是 URI?):(URI::InvalidURIError)

python - 在 Heroku 上的 RQ 中处理异常处理和重新排队

node.js - Redis Pub/Sub 扩展

ruby-on-rails - 如何在 Rails 应用程序中使用 ID 获取 Redis 数据

caching - 如何在 spring boot 应用程序中实现 redis 分布式缓存,允许像 RDBMS 一样查询缓存数据