redis列表的多个查询

时间:2015-02-24 16:56:39

标签: ruby redis

我有下一个情况:我在redis中有很多键。它之前存储为string类型。所以我不得不采取像:

这样的价值观

MGET key_1 key_2 ... key_n

事实上我使用带有redis gem的ruby脚本,但我认为很容易解释关于' raw'查询。 无论如何,现在这些密钥作为list存储在数据库中。而现在收集所有值的难度更大,因为我需要进行 n 查询 - 每个列表一个查询:

LRANGE key_1 0 -1LRANGE key_2 0 -1 等等。

花了很多时间,闻起来很糟糕。 可能有人可以推荐更好的东西吗?

由于

UPD

@ItamarHaber和@rchang在评论中做了恰当的评论。感谢。

有关更多信息,我将在一些音乐会示例中解释有关应用程序的一些详细信息:我使用仪表板来控制应用程序的部署。每个应用程序的版本历史记录完全以redis格式存储为list(类似application_1::historyapplication_2::history)。在表单中,我有这些版本的下拉输入。每个应用程序都有自己安装版本的历史记录。

因此,为了填充仪表板表单,我需要从所有这些键中获取值(我的意思是history键)。它最终应该是多个数组(如数组中的数组) - main是individually accessed数组,并没有将所有值折叠成一个大数组。而且我需要每个键的整个范围值。现在,如果我使用~100键,它看起来像是破坏了自行车而且花了很多时间:

values = []
keys = ["application_1::history", "application_2::history"]
keys.each do |k|
  values << $redis.lrange(k, 0, -1)
end

UPD

我想这个问题没有解决方案。一种可以缓解情况的变种,值得一试 - pipelining

但我认为最佳解决方案是更改存储数据的类型:如json为string类型。 <{1}}命令易于使用String和json易于解析。

0 个答案:

没有答案