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

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: 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 个

应用场景

例如:微博消息与微信公众号消息
  因为消息从会不断地添加与更新,因此使用链表的方式进行从左向右存储,拿取数据从左向右遍历获取最新消息


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
2月前
|
存储 NoSQL Redis
【Redis】利用Redis List实现数据库分页快速查询
【Redis】利用Redis List实现数据库分页快速查询
137 0
|
2月前
|
存储 缓存 NoSQL
利用Redis List实现数据库分页快速查询的有效方法
利用Redis List实现数据库分页快速查询的有效方法
|
2月前
|
存储 NoSQL Java
使用 Redis 的 List 数据结构实现分页查询的思路
使用 Redis 的 List 数据结构实现分页查询的思路
|
23小时前
|
NoSQL Java Unix
Redis基础操作 String List
Redis基础操作 String List
5 0
|
13天前
|
存储 NoSQL Redis
Redis入门到通关之Redis数据结构-List篇
Redis入门到通关之Redis数据结构-List篇
33 1
|
14天前
|
消息中间件 缓存 NoSQL
Redis入门到通关之List命令
Redis入门到通关之List命令
14 0
|
2月前
|
NoSQL Redis 索引
[Redis]——Redis命令手册set、list、sortedset
[Redis]——Redis命令手册set、list、sortedset
|
存储 NoSQL Redis
redis list底层数据结构
redis list数据结构  redis list数据结构底层采用压缩列表ziplist或linkedlist两种数据结构进行存储,首先以ziplist进行存储,在不满足ziplist的存储要求后转换为linkedlist列表。
2971 0
|
28天前
|
存储 NoSQL 算法
09- Redis分片集群中数据是怎么存储和读取的 ?
Redis分片集群使用哈希槽分区算法,包含16384个槽(0-16383)。数据存储时,通过CRC16算法对key计算并模16383,确定槽位,进而分配至对应节点。读取时,根据槽位找到相应节点直接操作。
59 12
|
28天前
|
NoSQL Linux Redis
06- 你们使用Redis是单点还是集群 ? 哪种集群 ?
**Redis配置:** 使用哨兵集群,结构为1主2从,加上3个哨兵节点,总计分布在3台Linux服务器上,提供高可用性。
356 0