按Redis中的元素数排序集

fpi*_*ghi 4 redis

我有一个带有多个集合的Redis数据库,所有集合都由一个共同的密钥模式标识,让我们说"myset:".

有没有办法从命令行客户端按照它们包含的元素数量对所有集合进行排序并返回该信息?根据我的理解,SORT命令只需要单个键.

我知道我可以用编程语言很容易地完成它,但我更喜欢能够在不必在服务器上安装任何驱动程序,编程环境等的情况下完成它.

谢谢你的帮助.

Did*_*zia 5

不,没有简单的技巧可以做到这一点.

Redis是一个商店,而不是真正的数据库管理系统.它不支持查询语言.如果需要检索某些数据,则必须预测访问路径并相应地设计数据结构.

例如,在您的示例中,您可以在添加/删除您感兴趣的集合中的项目时维护zset.在此zset中,值将是集合的键,分数是集合的基数.

按等级检索zset的内容将为您提供按基数排序的集合.

如果您没有计划此访问路径并仍然需要数据,那么除了使用编程语言之外别无选择.如果您无法安装任何Redis驱动程序,那么您可以使用Redis转储文件(由BGSAVE命令生成),将此文件下载到另一个框,并使用Sripathi Krishnan中的以下包解析它并计算您的统计信息要求.

https://github.com/sripathikrishnan/redis-rdb-tools

  • 如果它或多或少是“一次性”的,并且记住“keys”命令并不意味着在生产中使用,那么应该可以执行类似以下操作:“redis-cli keys 'myset:*' | awk '{printf "scard %s\n", $1}' | redis-cli`。但如果这是数据模型的一个重要方面,那么保留 zset 似乎是个好主意。 (2认同)