资讯动态

Redis命令:LPOP

发布时间:2026/10/18 6:56:37 来源:尧图企业网站定制
Redis LPOP 命令详细教程LPOP移除并返回列表表头左侧的第一个元素是列表作为队列、栈使用时最常用的出队与出栈命令。它自 Redis 1.0.0 起提供从 6.2.0 起支持可选的 count 参数可一次弹出并返回表头前 count 个元素。资料合集https://pan.quark.cn/s/10e98d308913、https://pan.quark.cn/s/f56bc69c5338一、概览与语法LPOP key [count]项目说明数据类型List支持版本Redis 1.0.0 起6.2.0 起支持可选 count 参数key目标列表 Keycount可选正整数弹出并返回表头前 count 个元素返回值不带 countBulk 字符串被弹出的元素Key 不存在时返回空值带 count元素数组Key 不存在时返回空值count 超过列表长度时弹出全部时间复杂度不带 count 为 O(1)带 count 为 O(N)N 为弹出的元素数ACLwrite、list、fast命令标记write、fast官方说明移除并返回存储在 key 的列表的第一个元素默认从列表头部弹出如果提供了可选的 count 参数响应将由 count 个元素组成具体取决于列表的长度。$TRAE_REF二、基础示例以下命令在测试实例的 redis-cli 中执行。文中结果是预期说明未实际连接 Redis 运行。示例沿用官方文档的数据与结果。DEL tutorial:{lpop}:mylist RPUSH tutorial:{lpop}:mylist one two three four five LPOP tutorial:{lpop}:mylist LPOP tutorial:{lpop}:mylist 2 LRANGE tutorial:{lpop}:mylist 0 -1 LPOP tutorial:{lpop}:no-such 10预期结果RPUSH 返回5第一条 LPOP 返回one表头元素被移除第二条带 count 返回[two,three]LRANGE 显示列表只剩[four,five]对不存在的 Key 执行带 count 的 LPOP 返回空值不报错。三、count 参数详解版本要求6.2.0 之前不支持 count老版本执行LPOP key 2会报语法错误。count 超过列表长度弹出全部元素不报错。count 为 0返回空数组列表保持不变。弹空即删 Key最后一个元素被弹出后 Key 自动删除。DEL tutorial:{lpop}:mylist RPUSH tutorial:{lpop}:mylist a b c LPOP tutorial:{lpop}:mylist 10 EXISTS tutorial:{lpop}:mylist RPUSH tutorial:{lpop}:mylist a LPOP tutorial:{lpop}:mylist 0 LRANGE tutorial:{lpop}:mylist 0 -1预期结果RPUSH 返回3count 10 超过列表长度返回全部元素[a,b,c]EXISTS 返回0列表被弹空后 Key 已删除重新写入一个元素后count 0 返回空数组LRANGE 确认列表仍是[a]。四、弹出即删除 KeyRedis 不存在空列表 Key列表的最后一个元素被弹出时Key 随之删除。这意味着不能依赖Key 还在但列表为空来标记状态需要用 EXISTS 或 TYPE 重新判断。DEL tutorial:{lpop}:mylist RPUSH tutorial:{lpop}:mylist only EXISTS tutorial:{lpop}:mylist LPOP tutorial:{lpop}:mylist EXISTS tutorial:{lpop}:mylist预期结果RPUSH 返回1第一次 EXISTS 返回1LPOP 返回only第二次 EXISTS 返回0Key 已随最后一个元素一起被删除。五、返回值与空结果的区分调用形态Key 存在且有元素Key 不存在或已弹空LPOP key单个元素Bulk 字符串空值LPOP key count元素数组元素数可能少于 count空值两种空值含义一致都不表示出错只表示没有元素可弹。LPOP key 0是唯一返回空数组而非空值的形态前提是 Key 存在说明列表在但没有弹出任何元素。六、边界情况与错误处理场景行为Key 不存在不带 count返回空值Key 不存在带 count返回空值Key 类型不是 List报 WRONGTYPEcount 为负数报ERR value is out of range, must be positivecount 不是整数报参数错误缺少 Key 参数报语法错误6.2.0 之前的版本带 count报语法错误SET tutorial:{lpop}:str text LPOP tutorial:{lpop}:str LPOP tutorial:{lpop}:mylist -1预期结果SET 返回 OK对 String 类型执行报 WRONGTYPEcount 为 -1 报ERR value is out of range, must be positive。七、与相近命令的区别命令与 LPOP 的区别RPOP从表尾右侧弹出BLPOP阻塞版支持多 Key列表为空时等待 timeout 秒LMPOP/BLMPOP多 Key 按序检查并可批量弹出7.0 起LMOVE/BLMOVE弹出并转移到另一列表实现可靠队列LREM按值删除指定元素不按位置弹出LPOP从表头弹出可与 RPUSH 组成 FIFO 队列八、客户端示例前提为已安装 redis-py 并准备好本地测试实例。redis-py 的lpop(name, countNone)不带 count 返回单个元素或None带 count 返回元素列表。importredis rredis.Redis(hostlocalhost,port6379,decode_responsesTrue)keytutorial:{lpop}:pytry:r.delete(key)r.rpush(key,one,two,three)print(r.lpop(key))# oneprint(r.lpop(key,2))# [two, three]print(r.lpop(key))# NoneKey 已被弹空删除print(r.lpop(no-such,5))# NoneKey 不存在finally:r.delete(key)r.close()JavaJedis示例lpop(key)返回String或nulllpop(key, 2)返回ListStringtry(JedisjedisnewJedis(localhost,6379)){Stringkeytutorial:{lpop}:java;jedis.del(key);jedis.rpush(key,one,two,three);System.out.println(jedis.lpop(key));// oneSystem.out.println(jedis.lpop(key,2));// [two, three]System.out.println(jedis.lpop(key));// nullKey 已被弹空删除jedis.del(key);}九、原子性与可靠性原子性单条 LPOP 原子完成多个消费者并发弹出不会拿到同一个元素每个元素 O(1)命令标记 fast适合高频调用。弹出后处理不可靠这是消费端最大的坑。元素一旦弹出就从 Redis 消失如果消费者在处理完成前崩溃该元素彻底丢失。需要至少一次投递语义时改用 LMOVE/BLMOVE 的处理中列表模式先转移到 processing 列表处理完成再删除崩溃后可重新投递。其他在 MULTI/EXEC 事务、Lua 脚本与管道中正常工作批量弹出用 count 参数一次完成优于循环调用单元素 LPOP。十、典型业务场景任务队列消费端生产者 RPUSH 入队消费者 LPOP 出队构成最简单的 FIFO 任务队列。撤销栈编辑器、操作面板把每步操作 LPUSH 压栈撤销时 LPOP 取出最近一步天然后进先出。限流令牌领取令牌桶把令牌 RPUSH 进列表请求到来时 LPOP 领取取不到即判定被限流。排行榜取头部LPOP key N一次取走榜单前 N 名配合弹出语义完成取走即出榜。十一、练习、排错与总结练习用tutorial:{lpop}:ex1模拟队列RPUSH 写入a b c d连续 LPOP 直到返回空值验证先进先出用tutorial:{lpop}:ex2模拟栈LPUSH 写入x y z连续 LPOP 验证逆序各执行一次带 count 的批量弹出并用 EXISTS 观察 Key 被弹空删除的时机。排错要点返回空值时用 EXISTS 区分 Key 从未存在与已被弹空报 WRONGTYPE 时用 TYPE 检查类型count 传负数报 out of range老版本报语法错误说明不支持 count 参数线上发现元素丢失时优先排查是否为弹出后崩溃考虑迁移到 LMOVE 处理中列表模式。清理使用DEL tutorial:{lpop}:mylist tutorial:{lpop}:queue tutorial:{lpop}:stack tutorial:{lpop}:str tutorial:{lpop}:py tutorial:{lpop}:java tutorial:{lpop}:ex1 tutorial:{lpop}:ex2。速记1.0 起、6.2 起可带 count、从表头弹出、单元素 O(1)、Key 不存在返回空值、弹空即删 Key、RPUSHLPOP 是队列 LPUSHLPOP 是栈、弹出后崩溃会丢元素、可靠场景用 LMOVE/BLMOVE。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑