上一篇
📢 最新动态(2025年8月)
Redis 7.4版本近期优化了链表内存碎片回收机制,对频繁修改的长链表性能提升达15%!如果你常使用LPUSH
/RPOP
这类操作,升级后会发现更流畅的体验~
Redis的链表(List)是用双向链表实现的,特点就是两头操作快如闪电⚡,中间操作慢如蜗牛🐌,适合用来做:
# 举个栗子🌰 LPUSH news "Redis 7.4发布啦!" # 头部插入 RPUSH news "支持AI缓存优化" # 尾部追加 LRANGE news 0 -1 # 查看全部元素
命令 | 作用 | 时间复杂度 |
---|---|---|
LPUSH |
头部插入元素 | O(1) |
RPOP |
尾部弹出元素 | O(1) |
LINDEX |
获取指定位置元素 | O(n) |
LINSERT |
在某个元素前后插入 | O(n) |
💡 小技巧:
LPUSH + RPOP
实现队列,用LPUSH + LPOP
实现栈 LINSERT
,长链表会卡顿! LPUSHX mylist "新消息" # 仅当链表存在时才插入 RPOPLPUSH src dst # 原子性地移动元素
LTRIM mylist 0 99 # 只保留前100条(防内存爆炸💥) LLEN mylist # 实时监控链表长度
LINDEX
/LRANGE
BLPOP
会卡住连接,记得设超时时间⏳ # 查看链表内存占用 MEMORY USAGE mylist # 大Key扫描(v7.0+特性) redis-cli --bigkeys -i 0.1
场景1:电商秒杀库存队列
LPUSH stock:iphone15 "order_2025" # 下单 RPOP stock:iphone15 # 扣库存
场景2:微博热帖缓存
# 只保留50条最新评论 LPUSH post:888 "用户A:太棒了!" LTRIM post:888 0 49
mylist:part1
、mylist:part2
PIPELINE
减少网络往返 Q:链表和ZSet都能排序,怎么选?
👉 要范围查询用ZSet,只要顺序存取用链表
Q:RPOPLPUSH
为什么被标记为"过时"?
👉 Redis 6.2起推荐用LMOVE
,语法更灵活:
LMOVE src dst LEFT RIGHT # 等价于RPOPLPUSH
本文由 余天瑞 于2025-08-03发表在【云服务器提供商】,文中图片由(余天瑞)上传,本平台仅提供信息存储服务;作者观点、意见不代表本站立场,如有侵权,请联系我们删除;若有图片侵权,请您准备原始证明材料和公证书后联系我方删除!
本文链接:https://vps.7tqx.com/wenda/529171.html
发表评论