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

Redis-列表(List)

Redis列表(List)

介绍

  • 单键多值
  • Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)
  • 它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差

常用命令

  • 从左边插入一个或多个值

    lpush <key> <value1> <value2> ...
    
  • 从右边插入一个或多个值

    rpush <key> <value1> <value2> ...
    
  • 从左边弹出一个值(值会被删除)

    lpop <key>
    
  • 从右边弹出一个值(值会被删除)

    rpop <key>
    
  • 从列表key1右边弹出一个值插入到key2左边

    rpoplpush <key1> <key2>
    
  • 根据索引批量获取元素(-1代表最后一个元素)

    lrange <key> <start> <stop>
    
  • 根据索引获取单个元素(从左到右)

    lindex <key> <index>
    
  • 获取列表长度

    llen <key>
    
  • 在value之前插入元素target

    linsert <key> before <value> <target>
    
  • 从左边删除n个值为value的元素

    lrem <key> <n> <value>
    
  • 将列表中索引为index的值替换为value

    lset <key> <index> <value>
    

列表的底层数据结构

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-igduPvc5-1683008483281)(C:\Users\33303\Desktop\Redis笔记\redis_list.png)]

  • List的数据结构为快速链表quickLis
  • 首先在列表元素较少的情况下会使用一块连续的内存存储,这个结构是ziplist,也即是压缩列表(类似于顺序表),它将所有的元素紧挨着一起存储,分配的是一块连续的内存,当数据量比较多的时候才会改成quicklist,因为普通的链表需要的附加指针空间太大,会比较浪费空间。比如这个列表里存的只是int类型的数据,结构上还需要两个额外的指针prev和next
  • Redis将链表和ziplist结合起来组成了quicklist,也就是将多个ziplist使用双向指针串起来使用。这样既满足了快速的插入删除性能,又不会出现太大的空间冗余

http://www.kler.cn/news/16451.html

相关文章:

  • 【23】linux进阶——linux的软链接和硬链接
  • NTT学习笔记(快速数论变换)
  • 【人脸检测】——YOLO5Face: Why Reinventing a Face Detector论文浅读
  • RT-Thread GD32F4xx 看门狗驱动
  • 1.3 HBase 基本架构
  • Android无线调试操作说明
  • 2023五一数学建模竞赛(五一赛)选题建议
  • 山东专升本计算机第九章-信息安全
  • 目标检测模型量化---用POT工具实现YOLOv5模型INT8量化
  • 详解Python web框架到底是怎么来的?
  • 设计 模式
  • C#手麻系统源码, 基于前端Winform+后端WCF +sqlserver 开发
  • KALI入门到高级【第五章】
  • Android 11.0 系统systemui状态栏下拉左滑显示通知栏右滑显示控制中心模块的流程分析
  • MySQL表的插入详解
  • 12 网络管理的封装
  • SpringBoot 多数据源及事务解决方案
  • 实验5 彩色图像处理与图像变换
  • C语言学习第一次总结
  • Qt 信号与槽机制
  • keepalived脑裂现象
  • Android Input系统事件分发分析
  • 题目 3166: 蓝桥杯2023年第十四届省赛真题-阶乘的和--不能完全通过,最好情况通过67.
  • “双碳”目标下二氧化碳地质封存技术应用前景及模型构建实践方法与讨论
  • 设备仪器仪表盘读数识别算法 yolov5
  • Eplan 部件库导入部件的方法
  • 自动化运维工具Ansible之playbooks剧本
  • Nginx原理解析
  • (基础算法)高精度加法,高精度减法
  • 【C语言】struct结构体