Redis的List的刪除


Redis的List命令里沒有根據index刪除元素的命令,但有的時候業務會需要這個功能。

先上命令:

LSET ListKey index "__deleted__"
LREM ListKey 0 "__deleted__"

也可以用事務管道合並成一次請求

MULTI
LSET ListKey index "__deleted__"
LREM ListKey 0 "__deleted__"
EXEC

 

先用LSET命令將要刪除的索引值置為一個特殊的刪除標識,再利用LREM命令將有刪除標識的元素刪除掉。

另外相關討論顯示,redis之所以沒有直接內置這個命令,是因為要考慮分布式情況下 兩個或多個端同時發送LREM請求,index是一個但是可能會刪掉多個。LSET則只會覆蓋掉同一index的值。無法以安全的原子操作來實現它。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM