从redis获取最新的set / hash

时间:2011-10-27 10:07:42

标签: python sorting redis hashset

我刚开始使用redis而且我已经通过noSql击中了我的第一个绊脚石;以前我所知道的只是SQL服务器。

我理解一切都是以价值为基础的原则。但是如何处理排序,例如:

使用哈希集:

HMSET users:1 firstname 'james' lastname 'smith' created 'datetime.datatime.now'

现在我假设你要添加第二条记录,你会得到哈希集的长度(在这种情况下我们会说它的1返回值x),然后添加另一行:

HMSET users:x firstname 'john' lastname 'smith' created 'datetime.datatime.now'

您如何获得最新记录?按日期?或者你能说'在hashset的-1处获得记录'吗?

当排序的集合更合适时,我可能会建议使用散列集吗?

2 个答案:

答案 0 :(得分:2)

您需要查看SORT命令。

如果存储在纪元时间,您可以按创建时间戳进行排序。

> HMSET users:1 firstname 'john' lastname 'smith' created 1319729878
"OK"
> HMSET users:2 firstname 'Jane' lastname 'Forbes' created 1319729910
"OK"
> sadd users 1
true
> sadd users 2
true
> sort users get users:*->firstname by users:*->created
["john","Jane"]
> sort users get users:*->firstname by users:*->created desc
["Jane","john"]

如果需要,您可以获得多个密钥,SORT可能是包含大多数选项的命令,请研究文档。

关于密钥,你必须仔细考虑可能的密钥重用(删除,计数+ 1,插入会重用密钥吗?),所以我只是从项目中的关系数据库中获取密钥。

答案 1 :(得分:0)

您应该使用一组有序的用户ID,当您添加到集合时,添加用户ID和时间戳作为分数。

然后你可以使用zrevrange之类的东西以asc或desc顺序将它们拉出来,将其限制为1条记录以获取最新信息。

然后你可以从哈希中获取所有值。

相关问题