我有下一个情况:我在redis中有很多键。它之前存储为string
类型。所以我不得不采取像:
MGET key_1 key_2 ... key_n
。
事实上我使用带有redis
gem的ruby脚本,但我认为很容易解释关于' raw'查询。
无论如何,现在这些密钥作为list
存储在数据库中。而现在收集所有值的难度更大,因为我需要进行 n 查询 - 每个列表一个查询:
LRANGE key_1 0 -1
,LRANGE key_2 0 -1
等等。
花了很多时间,闻起来很糟糕。 可能有人可以推荐更好的东西吗?
由于
UPD
@ItamarHaber和@rchang在评论中做了恰当的评论。感谢。
有关更多信息,我将在一些音乐会示例中解释有关应用程序的一些详细信息:我使用仪表板来控制应用程序的部署。每个应用程序的版本历史记录完全以redis格式存储为list
(类似application_1::history
,application_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易于解析。