当前位置: 首页 > news >正文

数据类型 list

一、介绍

类似于数组,顺序表,deque

结构图

特点:元素有序,元素允许重复

由于头尾高效插入删除,可以模拟栈,队列

二、常见 list 命令

1、lpush key elem [elem ...]

头插元素,返回值列表长度

2、lrange key start end

获取列表下标 [start, end] 区间的元素

3、lpushx key elem [elem ...]

如果 key 存在再头插元素

4、rpush key elem [elem ...]

尾插元素

5、rpushx key elem [elem ...]

如果 key 存在再尾插元素

 6、lpop key [count]

头删元素 count 次

7、rpop key [count]

尾删元素 count 次

8、lindex key index

获取下标 index 的元素

9、linsert key <before | after> pivot elem

从左往右在列表中找到 pivot 值,在值前 / 后插入元素

10、llen key 

获取列表长度

11、lrem key count elem

count > 0: 从左往右删除 count 个 elem

count > 0: 从右往左删除 count 个 elem

count = 0: 删除全部元素 elem

12、ltrim key start end

只保留区间 [start, end] 的元素

13、[blpop | brpop] key [key ...] timeout

阻塞 timeout 内删除元素

如果 list 非空,和 lpop, rpop 一样

如果 list 为空,不会立即返回,在 timeout 时间内如果列表不为空了那就删除并返回

阻塞时间内 Redis 可以执行其他命令

在等待多个 key 的列表时,哪个先不为空那就删除哪个,并且命令返回

多个客户端同时 pop,哪个先执行哪个就 pop

返回删除的 key 和删除的元素

三、内部编码

总体用的是 quicklist,由 ziplist 和 linkedlist 链表组成

把一个个的压缩列表用链表的形式组织起来

结合二者的有点,ziplist 存储个数少的元素节省空间,linkedlist 存储个数的元素效率高

四、应用场景

1、消息队列

生产者消费者模型

2、模拟外键

把两个表中的主键提取,结合成列表建立联系。

如提取课程 id 和学生 id,key 就是一个课程的 id,list 里面存储所有选课学生的 id,这样 redis 就能模拟出外键的效果

http://www.dtcms.com/a/327432.html

相关文章:

  • 小白挑战一周上架元服务——ArkUI04
  • 前端最新Vue2+Vue3基础入门到实战项目全套教程,自学前端vue就选黑马程序员,一套全通关!笔记
  • Java面试宝典:G1垃圾收集器上
  • 超详细!VMware12 安装win7操作系统
  • react+vite来优化下每次使用hook函数都要引入的情况
  • Neo4j Cypher
  • 哪个视频播放器好用?视频播放器PotPlayer下载安装与调教教程
  • QGraphicsAnchorLayout测试pyside6和C++
  • 微内核与插件化设计思想及其在前端项目中的应用
  • 怎么写好汉语言文学专业的论文?
  • TongSearch3.0.6.0安装和使用指引(by lqw)
  • Day 38: Dataset类和DataLoader类
  • 三点估算法(Three-Point Estimation)
  • OpenHarmony介绍
  • 知识篇 | Oracle Active Data Guard(ADG)同步机制再学习
  • TCP服务器网络编程设计流程详解
  • 车规级霍尔开关芯片SC25891 | 为汽车安全带扣筑起高可靠性安全防线
  • FileLink:为企业跨网文件传输筑牢安全与效率基石
  • Go 语言中的结构体、切片与映射:构建高效数据模型的基石
  • apache+虚拟主机
  • windows git安装步骤
  • 深入剖析 React 合成事件:透过 onClick 看本质
  • Flutter UI Kits by Olayemi Garuba:免费开源的高质量UI组件库
  • C++中template、 implicit 、explicit关键字详解
  • Kimi K2 架构深度解析:万亿MoE模型的效率革命与智能体突破
  • Linux随记(二十二)
  • Notta:高效智能的音频转文字工具
  • 视频抽取关键帧算法
  • MR一体机(VST)预算思路
  • Linux的pthread怎么实现的?(包括到汇编层的实现)