Redis底层学习(三)—存储类型-List篇

特点

适⽤场景:消息队列。
它的特点就是内部元素有序、重复,并且插⼊和删除很快 O(1) ,但是查找却很慢 O(n) 。功能⽀持队列和栈操作。

具体服务器操作命令

左侧插⼊元素: LPUSH [key] [value1] … [valueN]
右侧插⼊元素: RPUSH [key] [value1] … [valueN]
左侧弹出元素: LPOP [key]
右侧弹出元素: RPOP [key]
查看队列⻓度: LLEN [key]
查询列表中下标为index的元素值: LINDEX [key] [index]
按范围查看队列信息: LRANGE [key] [start_index] [end_index]
仅保留某区间的列表,其余元素全被删除: LTRIM [key] [start_index] [end_index]

具体操作

使用压缩链表与双向链表进行存储

压缩链表:每个列表节点保存⼀个列表中的元素
当我们执⾏ RPUSH testlist a b c 之后,其数据结构如下
在这里插入图片描述
双向链表:每个节点保存⼀个元素

在这里插入图片描述

编码转换规则:
同时满⾜⼀下两个条件时,就是 ziplist 类型,否则是 linkedlist 类型
【条件1】列表中所有元素⻓度都⼩于 65 字节。
【条件2】列表中元素的个数⼩于 512 个

应用场景
例如:微博消息与微信公众号消息
	因为消息从会不断地添加与更新,因此使用链表的方式进行从左向右存储,拿取数据从左向右遍历获取最新消息
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值