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