2012-06-12 137 views
2

我有一个列表,我使用RPUSH添加了元素,它返回列表的更新长度。我的问题是,使用返回的长度 - 1作为新插入项目的索引是否可靠?获取Redis列表项目索引

由可靠我的意思是,如果我有多个连接到Redis做同样的操作是保证不会有任何重叠像实际返回后返回的两个RPUSH同时发生或是Redis的列表操作原子默认情况下,还是我需要交易?

回答

2

考虑到redis命令的原子性,您可以100%确定每个RPUSH后面会跟随相应的整数回复,因此可以安全地假定元素的索引是(integer_reply - 1)。我回答了某种相关的问题here

+0

嘿谢谢,但这是否意味着我不需要交易? – Marconi

+0

啊是的,我只是写了一个python测试,其实integer_reply - 1是可靠的,但只有当你有一个连接。无论何时我的测试开始产生多个并行连接,redis都会开始处理那些连接可以先推送的人,但如果我添加事务,则所有事情都按预期工作。 以下是我的测试代码链接https://gist.github.com/2915849 – Marconi