如何在Redis列表中获取最新元素的索引?

9
如何在Redis列表中获取最新元素的索引? 例如,如果在List中存储了消息的ID,我需要获取最新的消息last ID并返回该元素的index
2个回答

11

在Redis中,索引-1始终指向LIST中的最后一个元素。

这比尝试从列表开头找到索引要好得多(使用LLEN可以获得此方式),因为如果有人在您获取索引后但在访问元素之前插入或删除了项目,那么会出现问题。

要获取Redis列表的最后一个元素,可以使用LINDEX key -1 command。 您还可以使用LPOP key命令原子地删除列表的最后一个元素。

所有Redis命令的文档都可以在http://redis.io/commands找到。


非常感谢。但对我来说不够清晰。例如,有一个列表MESSAGES0-101,1-102,2-103。我获取最后一个元素:LRANGE MESSAGES -1 -1。它的值是:103。如何获取索引2 - PiligrimBilim
1
如果你真的想要最后一个索引,而不是最后一个元素,你可以使用LLEN并从结果中减去1。请注意,如果其他进程或线程正在访问您的Redis实例,则这可能不是长期的最后一个索引。 - jjm
你使用的是哪种编程语言? - jjm
没有相关经验,但根据文档,您可以像这样执行$lastIndex = $redis->lSize('MESSAGES') - 1; - jjm
好的,那么如果我想从LIST中获取最后一个索引及其之后的元素,该怎么做呢?例如:1, 2, 3, 4, 5。我获取了最后一个索引3并添加了4, 5元素。然后我需要获取最新的元素从3开始,它们是:4, 5 - PiligrimBilim
显示剩余4条评论

4
要获取最后一个元素,您也可以使用以下代码:
lrange mylist -1 -1 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接