一、介绍

类似于数组,顺序表,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.pswp.cn/diannao/95653.shtml
繁体地址,请注明出处:http://hk.pswp.cn/diannao/95653.shtml
英文地址,请注明出处:http://en.pswp.cn/diannao/95653.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

pyqt5无法显示opencv绘制文本和掩码信息

背景&#xff1a;pyqt5无法显示opencv绘制的标签和mask&#xff1b;我们在使用YOLO做实例分割做推理时&#xff0c;会使用opencv做后处理结果绘制&#xff08;含标签绘制和掩码绘制&#xff09;&#xff1b;结果opencv绘制的解码却无法在pyqt的解码上面显示。pyqt转换代码如下&…

如何生成严格递增的分布式id?

本文字数&#xff1a;2604字预计阅读时间&#xff1a;15分钟01引言在现有分布式系统中&#xff0c;面对增长迅速的业务数据&#xff0c;id生成一直是非常重要的一环。而分布式系统的id生成方案需要满足几个重要特性&#xff1a;容错高可用、高性能高并发、全局唯一。02技术背景…

【LeetCode】二叉树相关算法题

目录1、二叉树介绍【1】核心概念【2】关键特性2、算法题【1】二叉树的前序遍历【2】二叉树的后序遍历1、二叉树介绍 【1】核心概念 结构含义节点结构二叉树由节点组成&#xff0c; 每个节点包含一个数据元素和最多两个子节点&#xff1a;左子节点和右子节点根节点树的顶部节点…

Vulnhub Deathnote靶机复现攻略

一、靶机安装 下载地址&#xff1a;https://download.vulnhub.com/deathnote/Deathnote.ova 下载好后使用VB打开&#xff0c;配置如下 二、主机发现 使用相同连接方式的kali进行后续操作(172.16.2.7)根据mac地址进行确认。 nmap -sn 172.16.2.1/24 三、端口扫描 端口开放了…

DevEco Studio 6.0.0 元服务页面跳转失败

背景&#xff0c;我使用最新的编辑器DevEco Studio 6.0.0&#xff0c;编写一个元服务&#xff0c;发现使用跳转页面的时候失败了&#xff01;然后查看官方文档&#xff0c;两种方式都测试了&#xff0c;发现都不行。 方法1&#xff1a;Navigation路由跳转无效&#xff0c;见官方…

docker重启或系统重启后harbor自动启动

docker重启或系统重启后harbor自动启动docker重启或系统重启后harbor自动启动方法 1&#xff1a;在 docker-compose.yml 中配置重启策略&#xff08;推荐&#xff09;方法 2&#xff1a;创建 Systemd 服务&#xff08;更可靠&#xff09;方法 3&#xff1a;使用 Docker 的 Rest…

OpenZeppelin Contracts 架构分层分析

OpenZeppelin Contracts 是一个面向以太坊&#xff08;及兼容 EVM 的区块链&#xff09;生态系统的​​模块化、安全性优先、标准兼容的智能合约库​​。其内部代码按照功能职责与抽象层级&#xff0c;可系统性地划分为多个逻辑层次。理解这些层次及其依赖关系&#xff0c;对于…

Java-JVM的内存模型

一.JVM内存模型JVM内存模型可以从进程生命周期和线程生命周期1.线程生命周期每个线程都会有自己各自一份数据&#xff0c;不会存在线程安全问题1.程序计数器指示当前线程执行的字节码指令的行号&#xff0c;以便线程执行时可以回到正确的位置2.虚拟机栈线程私有的&#xff0c;与…

Highcharts Dashboards | 打造企业级数据仪表板:从图表到数据驾驶舱

企业日常决策、产品运营、业务监控&#xff0c;越来越依赖数据驱动。而仪表板&#xff08;Dashboard&#xff09;作为汇总展示多维度信息的“数据驾驶舱”&#xff0c;已成为企业可视化的核心场景之一。如果你正在寻找一款能够快速、灵活、安全构建仪表板的前端图表工具&#x…

基于Java的Markdown转Word工具(标题、段落、表格、Echarts图等)

项目源于我们开发的一款基于大模型的报告生成工具。由于需要将 Markdown 格式的内容导出为 Word 文档&#xff0c;而市面上缺乏合适的现成工具&#xff0c;所以决定自己开发一个Markdown转Word的工具。 &#x1fa77;源码地址&#xff1a;daydayup-zyn/md2doc-plus &#x1f…

Unity:PlayerPrefs笔记

写在前面&#xff1a;写本系列(自用)的目的是回顾已经学过的知识、记录新学习的知识或是记录心得理解&#xff0c;方便自己以后快速复习&#xff0c;减少遗忘。一、PlayerPrefs的基本方法1、存储相关PlayerPrefs的数据存储类似于键值对存储&#xff0c;一个键对应一个值。Unity…

SQL tutorials

SQL Literature SQL运行在资料库管理系统&#xff08;Database Management System&#xff09;&#xff0c;如MySQL&#xff0c;Postgre SQL&#xff0c;Microsoft SQL Server&#xff0c; Oracle&#xff0c;etc。 SQL练习平台&#xff1a;https://sqliteviz.com/ EXAMPLE SQL…

MySQL快速恢复数据的N种方案完全教程

目录 1. 理解MySQL数据恢复的核心逻辑 1.1 数据丢失的常见场景 1.2 MySQL的“救命稻草”:关键文件和机制 2. 方案一:利用全量备份+binlog实现点对点恢复 2.1 准备工作 2.2 恢复步骤 2.3 实战案例 3. 方案二:利用InnoDB的崩溃恢复机制 3.1 崩溃恢复的原理 3.2 恢复步…

双屏加固笔记本电脑C156-2:坚固与高效的完美融合

在当今数字化时代&#xff0c;笔记本电脑已成为人们工作和生活中不可或缺的工具。然而&#xff0c;对于一些特殊行业和恶劣环境下的应用场景&#xff0c;普通笔记本电脑往往难以满足需求。此时&#xff0c;具备坚固耐用、高性能等特点的加固笔记本电脑应运而生。鲁成伟业的双屏…

Jenkins 环境部署

下载相关软件&#xff1a;Jenkins 的安装和设置 相关工具&#xff1a; Git : Git - Downloads java 17: Java Archive Downloads - Java SE 17.0.12 and earlier python : Download Python | Python.org jenkins、jenkins.war : Jenkins 的安装和设置 将所有软件安装后&am…

如何高效解决 Java 内存泄漏问题方法论

目录 一、系统化的诊断与优化方法论 二、获取内存快照:内存泄漏的第一步 (一)自动生成 Heap Dump (二)手动生成 Heap Dump 三、导入分析工具:MAT 和 JProfiler (一)MAT (Memory Analyzer Tool) (二)JProfiler (三)自身企业工具 四、深入分析:逐步排查内存…

HarmonyOS Camera Kit 全解析:从基础拍摄到跨设备协同的实战指南

在移动应用开发中&#xff0c;相机功能往往是提升用户体验的关键模块&#xff0c;但传统相机开发面临权限管理复杂、设备兼容性差、功能实现繁琐等痛点。HarmonyOS 作为面向全场景的分布式操作系统&#xff0c;其 Camera Kit&#xff08;相机服务&#xff09;通过统一的 API 接…

运用词向量模型分辨评论

代码实现&#xff1a;import jieba import pandas as pd hp pd.read_table(优质评价.txt,encodinggbk) cp pd.read_table(差评1.txt,encodinggbk) cp_segments [] contents cp.content.values.tolist() for content in contents:results jieba.lcut(content)if len(result…

基于Apache Flink的实时数据处理架构设计与高可用性实战经验分享

基于Apache Flink的实时数据处理架构设计与高可用性实战经验分享 一、业务场景描述 在现代电商平台中&#xff0c;实时用户行为数据&#xff08;点击、浏览、购物车操作等&#xff09;对业务决策、个性化推荐和风控都至关重要。我们需要搭建一个高吞吐、低延迟且具备高可用性的…

第二十四天:虚函数与纯虚函数

虚函数&#xff08;Virtual Function&#xff09; 定义&#xff1a;在基类中使用 virtual 关键字声明的成员函数&#xff0c;允许在派生类中被重新定义&#xff08;覆盖&#xff0c;override&#xff09;。其目的是实现多态性&#xff0c;即通过基类指针或引用调用函数时&#…