我已将数据存储在redis哈希中,如下所示:
client> hmset date:20150513 user 21 m 20 f 1
client> hmset date:20150514 user 17 m 10 f 7
client> hmset date:20150515 user 13 m 3 f 10
client> hmset date:20150516 user 15 m 10 f 5
client> hmset date:20150517 user 15 m 10 f 5
client> hmset date:20150518 user 7 m 3 f 4
client> hmset date:20150519 user 10 m 7 f 3
这是日期用户摘要(包括男性,女性分叉)。现在我想按降序排序按日期排序前5个键。在上面的例子中,我想要
日期:20150519,日期:20150518,日期:20150517,日期:20150516和日期:20150515。
如何编写脚本(luascript)或命令来检索数据?
答案 0 :(得分:2)
解决此问题的最佳方法是将日期存储在分数集中,其分数为日期。您的示例数据需要以下内容:
client> ZADD dates 20150515 20150515 20150516 20150516 20150517 20150517 20150518 20150518 20150519 20150519
现在,您可以轻松地获得前5个条目:
client> ZREVRANGEBYSCORE dates +inf -inf LIMIT 0 5
并在每个回复后跟HMGET
。您也可以使用SORT
实际获取数据,所有这些都在一个命令中,即
client> SORT dates GET date:*->user GET date:*->m GET date:*->f LIMIT 0 5 DESC
最后,这对Lua来说当然是非常可行的,但除非你需要解决其他要求,否则脚本在这里可能是一种过度杀伤。