Redis-列表(List)

news/2024/10/17 14:25:59/

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.ppmy.cn/news/59396.html

相关文章

cout源码浅析

目录 cout源码浅析 那么对于没有定义在这之中的要怎么办呢&#xff1f; 实际使用 结语 首先来看我从cplusplus中截取的这张图&#xff1a; 注意最下面这一行字。cout其实是ostream的一个标准对象object。而上面则演示了一些继承关系。 好的&#xff0c;理解了之后&#xf…

Python SMTP

SMTP&#xff08;简单邮件传输协议&#xff09;是电子邮件传输的标准协议。Python 提供了 smtplib 模块&#xff0c;用于在 Python 中发送电子邮件。下面是一个简单的例子&#xff1a; python import smtplib # SMTP 服务器地址和端口号 smtp_server smtp.example.com smtp_…

沁恒 CH32V208(二): CH32V208的储存结构, 启动模式和时钟

目录 沁恒 CH32V208(一): CH32V208WBU6 评估板上手报告和Win10环境配置沁恒 CH32V208(二): CH32V208的储存结构, 启动模式和时钟 CH32V 存储容量命名方式 在介绍下面的内容前, 先看一下CH32V系列和存储相关的命名格式, 以CH32V203为例, 前面的CH32V203代表一个系列, 后面的字…

什么是存储器刷新

简答 22. 什么是存储器刷新&#xff1f;常用哪几种方式&#xff1f; 为了维护所存信息&#xff0c;需要在一定时间内将所存的信息读出再重新写入&#xff0c;这一过程称为刷新。刷新是一行一行进行的&#xff0c;由CPU自动完成。 主要有&#xff1a;可集中刷新,分散刷新和异步刷…

ubuntu16.04升级到20.04后报错 By not providing “FindEigen.cmake“

编译问题&#xff1a; CMake Error at modules/perception/lidar/CMakeLists.txt:14 (find_package): By not providing "FindEigen.cmake" in CMAKE_MODULE_PATH this project has asked CMake to find a package configuration file provided by "Eigen&…

安装Node.js和cnpm

一、安装Node.js 1.下载 Node.js官网下载 根据自身系统下载对应的安装包&#xff08;我这里为Windows10 64位&#xff0c;故选择下载第一个安装包&#xff09; 2、然后点击安装&#xff0c;选择自己要安装的路径&#xff0c;此处我选择的是&#xff1a;D:\Program Files\node…

MapReduce常用参数调优

一、资源相关参数 mapred-default.xml 配置参数参数说明mapreduce.map.memory.mb一个MapTask可使用的资源上限&#xff08;单位:MB&#xff09;&#xff0c;默认为1024。如果MapTask实际使用的资源量超过该值&#xff0c;则会被强制杀死。mapreduce.reduce.memory.mb一个Redu…

为什么要通过API接口来获取数据

API接口&#xff08;应用编程接口 application/programming接口&#xff09;&#xff0c;准许应用程序通过定义的接口标准来访问另一个应用程序或服务的编程方式。简单来说&#xff0c;API就是两个软件或系统之间的通信语言或接口。 在当今的互联网时代&#xff0c;数据无处不…