redis中list类型的操作

一、特点    
Redis列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。一个列表最多可以包含 2^32 - 1 个元素 (超过40亿个元素)。


    list其底层使用quicklist存储数据

    quicklist:称为快速列表,是由listPack组成的双向链表,即quicklist的每一个节点都是一个listPack。当listPack的大小超过8k时,才会创建下一个节点。

    listPack是优化后的ziplist,listPack每个节点不再包含前一个节点的长度,这样就可以避免极端情况下连锁更新带来的不小的性能消耗。

二、使用场景
1、消息队列

    比如在秒杀时,多人同时请求服务,可能会堵塞服务器的通道,甚至造成服务器宕机。如果按用户的点击顺序先把请求保存到redis的list中(配合string类型统计数量,超过秒杀数量的请求忽略掉)。服务再从redis中取出请求进行处理。

2、评论列表

    可以把视频、小说、或是新闻的评论保存到list中,把最新的评论添加到最前面。还可以把回复插入到某条评论的后面。

3、分页

    每个用户的查询条件不同,当用户量大时,实时查询对服务器的性能影响较大,如果把用户查询的结果缓存到redis中,当用户查看某一页时,服务在缓存此页的同时,把下一页也查询缓存在redis中,用户翻页时可直接从缓存中获取,并且回退查看上一页时,也可以直接从redis缓存中获取。

4、排行榜结果

    比如热搜排行,首先这种排行并不是实时的,每天会在指定的时间进行更新,此时可以把统计的结果缓存在reids的list中。

5、工作流

    有许多业务是有流程的,上一步完成,再一下步,经常在编辑的时候需要进行回退操作。可以把每一步的数据缓存在reids的list中,当要回退时,反向获取即可。

三、添加值
1、添加元素到列表的头部

1)lpush

    向列表头部一次添加一个或多个值,在前面的值会先插入,方法返回当前列表中值的数量。如果key不存在,则创建key

语法

lpush key element [element ...]

示例

//在列表头部添加两个民族
lpush nation '汉族' '壮族'

2)lpushx

    仅当key存在时,向列表头部一次添加一个或多个值,在前面的值会先插入,方法返回当前列表中值的数量。

语法

lpushx key element [element ...]

示例

//向列表中添加两个民族
lpushx nation '苗族' '傣族'

2、添加元素到列表尾部

1)rpush

    向列表尾部一次添加一个或多个值,在前面的值会先插入,方法返回当前列表中值的数量。如果key不存在,则创建key

语法

rpush key element [element ...]

示例

//向列表尾部添加回族和满族
rpush nation '回族' '满族'

2)rpushx

    仅当key存在时,向列表尾部一次添加一个或多个值,在前面的值会先插入,方法返回当前列表中值的数量。

语法

rpushx key element [element ...]

示例

//向列表的尾部添加藏族和侗族
rpushx nation '藏族' '侗族'

3、添加元素到指定值的前或后方

3)linsert

    在指定的值的前面或是后面插入一个新值,返回当前列表中值的数量

语法

linsert key BEFORE|AFTER pivot element

示例

//在苗族的前面插入布衣族

linsert nation before '苗族' '布衣族'

四、修改值
1、lset

修改指定下标位置的值,位置从0开始计算,-1表示最后一个元素

语法

lset key index element

示例

//把第3个值替换成羌族
lset nation 2 '羌族'

五、删除值
1、从列表头部删除值

1)lpop

从列表的头部开始删除指定数量的值,删除后返回被删除的值

语法

lpop key [count]

示例

//删除并返回前两个值
lpop nation 2

2)blpop

      从列表的头部删除一个值并返回此值, 如果列表没有值会阻塞列表直到等待超时或发现可删除的值为止。

语法

blpop key [key ...] timeout

其中

timeout为超时时间,单位为秒

示例

//删除第一个元素,如果不存在等待10秒
blpop nation 10

2、从列表的尾部删除一个值

1)rpop

    从列表的尾部开始删除指定数量的值,删除后返回被删除的值

语法

rpop key [count]

示例

//删除并返回最后两个值
rpop nation 2

2)brpop

    从列表的尾部删除一个值并返回此值, 如果列表没有值会阻塞列表直到等待超时或发现可删除的值为止。

语法

brpop key [key ...] timeout

示例

//删除最后一个元素
brpop nation 10

3)rpoplpush

    把一个列表末尾的值删除并把此值从头部插入到另一个列表中,返回被删除的值

语法

rpoplpush source destination

示例

//把列表中的最后一个值移动到最前面,返回移动的值
rpoplpush nation nation

3)brpoplpush

    把一个列表末尾的值删除并把此值从头部插入到另一个列表中,返回被删除的值。如果列表没有值会阻塞列表直到等待超时或发现可删除的值为止。

brpoplpush source destination timeout

示例

//把nation中的最后一个元素转移到nation1中
brpoplpush nation nation1 10

4)lrem

    删除列表中指定的值,如果值有重复,删除从头部算起的前count个值,如果不够,则删除实际数量的值,当count为0时,删除所有指定的值

语法

lrem key count element

示例

//删除前两个回族,如果存在的话
lrem nation 2 回族

5)ltrim

    把指定范围之外的元素都删除,下标从0开始,-1表示最后一个元素。

语法

ltrim key start stop

示例

//只保存第2个值,其它值全部删除
ltrim nation 1 1

六、查看值
1、lindex

    返回指定下标位置的值,-1为最后一个元素

语法

lindex key index

示例

//返回第3个值
lindex nation 2

2、llen

    返回当前列表中元素的数量

语法

llen key

示例

//返回列表中值的数量
llen nation

3、lrange

    返回指定范围内的值,下标从0开始,-1为最后一个元素

语法

lrange key start stop

示例

//返回列表中前两个值
lrange nation 0 1

 文章来源于哔站《redis中list类型的操作》

更多学习视频和专栏文章请到哔站个人空间: 布道师学院的个人空间-布道师学院个人主页-哔哩哔哩视频

更多资源和项目下载请到:”开源吧(找实战项目和毕设项目的好网站)“ ​ :开源吧

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/147554.html

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

相关文章

力扣-383.赎金信

Idea 使用一个hashmap 或者一个int数组存储第二次字符串中每一个字符及其出现的次数 遍历第一个字符串,讲出现的重复字符减1,若该字符次数已经为0,则返回false AC Code class Solution { public:bool canConstruct(string ransomNote, strin…

色彩一致性自动处理方法在遥感图像中的应用

前言 在获取卫星遥感影像时,由于受不均匀的光照、不同的大气条件和不同的传感器设备等因素的影响,遥感影像中会存在局部亮度和色彩分布不均匀的现象,下面是在BigMap地图下载器中收集的几幅谷歌卫星影像,像下面这种都是拼接好的影像…

S32K144 GPIO编程

前面的文章介绍了如何在MDK-Keil下面进行S32K144的开发,下面就使用该工程模板进行GPIO LED的编程试验。 1. 开发环境 S32K144EVB-Q100开发板MDK-Keil Jlink 2. 硬件连接 S32K144EVB-Q100开发板关于LED的原理图如下: 也就是具体连接关系如下&#xf…

键盘上F1至F12键的作用

多年来,我们习惯了最上排的12个按键,从F1到F12,它们被称为“快速功能键”,可以让你更轻松地操作电脑;但是,很多人可能从未使用过它们,也从来不知道它们的用途。那么今天,就向大家科普…

以太网基础学习(二)——ARP协议

一、什么是MAC地址 MAC地址(英语:Media Access Control Address),直译为媒体访问控制位址,也称为局域网地址(LAN Address),MAC位址,以太网地址(Ethernet Addr…

蓝桥杯每日一题2023.10.3

杨辉三角形 - 蓝桥云课 (lanqiao.cn) 题目描述 题目分析 40分写法&#xff1a; 可以自己手动构造一个杨辉三角&#xff0c;然后进行循环&#xff0c;用cnt记录下循环数的个数&#xff0c;看哪个数与要找的数一样&#xff0c;输出cnt #include<bits/stdc.h> using na…

Flutter笔记:滚动之-无限滚动与动态加载的实现(GetX简单状态管理版)

Flutter笔记 无限滚动与动态加载的实现&#xff08;GeX简单状态管理版&#xff09; 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq…

JavaScript系列从入门到精通系列第十二篇:JavaScript中对象的简介和对象的基本操作以及JavaScript中的属性值和属性名

文章目录 前言 一&#xff1a;对象分类 1&#xff1a;内建对象 2&#xff1a;宿主对象 3&#xff1a;自建对象 二&#xff1a;对象的基本操作 1&#xff1a;创建对象 2&#xff1a;向对象中添加属性 3&#xff1a;读取对象中的属性 4&#xff1a;修改对象中的属性 三…

问题: 视频颜色问题,偏绿

参考 什么是杜比视界&#xff1f; - https://www.youtube.com/watch?vldXDQ6VlC7g 【哈士亓说】07&#xff1a;HDR、杜比视界究竟是个啥&#xff1f;为什么这个视频还不是HDR视频&#xff1f; - https://www.youtube.com/watch?vrgb9Xg3cJns 正文 视频应该是 杜比视界 电…

231003-四步MacOS-iPadOS设置无线竖屏随航SideCar

Step 0&#xff1a;MacOS到iPad无线竖屏随航显示&#xff0c;最终效果 Step 1&#xff1a; 下载 Better Display Step 2&#xff1a;在设置中新建虚拟屏幕&#xff0c;创建虚拟屏幕 Step 3&#xff1a;进行如下设置 Step 4&#xff1a;注意事项 ⚠️ 设置后的虚拟屏幕与Sideca…

excel中将一个sheet表根据条件分成多个sheet表

有如下excel表&#xff0c;要求&#xff1a;按月份将每月的情况放在一个sheet中。 目测有6个月&#xff0c;就应该有6个sheet&#xff0c;每个sheet中体现本月的情况。 一、首先增加一个辅助列&#xff0c;月份&#xff0c;使用month函数即可。 填充此列所有。然后复制【月份】…

知识分享 钡铼网关功能介绍:使用SSLTLS 加密,保证MQTT通信安全

背景 为了使不同的设备或系统能够相互通信&#xff0c;让旧有系统和新的系统可以集成&#xff0c;通信更加灵活和可靠。以及将数据从不同的来源收集并传输到不同的目的地&#xff0c;实现数据的集中管理和分发。 通信网关完美克服了这一难题&#xff0c;485或者网口的设备能通过…

Docker项目部署

目录 一、前端项目部署 1、上传文件 2、开启容器 3、测试 二、后端项目部署 1、打包java项目 2、将jar包和Dockerfile文件长传到Linux系统 3、构建镜像 4、开启容器 5、测试 一、前端项目部署 1、上传文件 里面包括页面和配置文件 worker_processes 1;events {worker…

【Pytorch笔记】4.梯度计算

深度之眼官方账号 - 01-04-mp4-计算图与动态图机制 前置知识&#xff1a;计算图 可以参考我的笔记&#xff1a; 【学习笔记】计算机视觉与深度学习(2.全连接神经网络) 计算图 以这棵计算图为例。这个计算图中&#xff0c;叶子节点为x和w。 import torchw torch.tensor([1.]…

分类预测 | MATLAB实现SSA-FS-SVM麻雀算法同步优化特征选择结合支持向量机分类预测

分类预测 | MATLAB实现SSA-FS-SVM麻雀算法同步优化特征选择结合支持向量机分类预测 目录 分类预测 | MATLAB实现SSA-FS-SVM麻雀算法同步优化特征选择结合支持向量机分类预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 MATLAB实现SSA-FS-SVM麻雀算法同步优化特征选择结…

快速选择排序

"你经过我每个灿烂时刻&#xff0c;我才真正学会如你般自由" 前些天有些无聊&#xff0c;想试试自己写的快排能否过leetcode上的排序算法题。结果是&#xff0c;不用截图可想而知&#xff0c;肯定是没过的&#xff0c;否则也不会有这篇文章的产出。 这份快排算法代码…

HCQ1-1300-D【高速输入】

因为我的PLC固件比较旧。所以有些限制。【比如&#xff1a;编译不报错&#xff0c;下载PLC程序就报故障】我的PLC的高速输入类型只能是【hsi_ref】 所以&#xff0c;程序添加的高速输入模块只能是【1.0.1.0】版本 如果固件版本低&#xff0c;看下固件能支持的类型。选错的话&am…

苹果曾考虑基于定位控制AirPods Pro自适应音频

在一次最近的采访中&#xff0c;苹果公司的高管Ron Huang和Eric Treski透露&#xff0c;他们在开发AirPods Pro自适应音频功能时&#xff0c;曾考虑使用GPS信号来控制音频级别。这个有趣的细节打破了我们对AirPods Pro的固有认知&#xff0c;让我们对苹果的创新思维有了更深的…

Python学习笔记之运算符的使用

Python学习笔记之运算符的使用 整型&#xff1a;二进制0b100十进制4、八进制0o100十进制64、十进制100、十六进制0x100十进制256浮点型&#xff1a;123.456&#xff0c;1.23456e2字符串型&#xff1a;‘Hello’&#xff0c;“Hello”布尔型&#xff1a;True、False复数型&…

电子计算机核心发展(继电器-真空管-晶体管)

目录 继电器 最大的机电计算机之一——哈弗Mark1号&#xff0c;IBM1944年 背景 组成 性能 核心——继电器 简介 缺点 速度 齿轮磨损 Bug的由来 真空管诞生 组成 控制开关电流 继电器对比 磨损 速度 缺点 影响 代表 第一个可编程计算机 第一个真正通用&am…