2012-06-12 136 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