四.1 Redis 五大数据类型/结构的详细说明/详细使用(List 列表数据类型详解和使用)
四.1 Redis 五大数据类型/结构的详细说明/详细使用(List 列表数据类型详解和使用)
@
- 四.1 Redis 五大数据类型/结构的详细说明/详细使用(List 列表数据类型详解和使用)
- 2. list 列表常用指令(详细讲解说明)
- 2.1
lpush/rpush <key><value1><value2><value3> ....从左边/右边插入一个或多个值 - 2.2
lrange <key><start><stop>按照索引下标获得元素(从左到右) - 2.3
lpop/rpop <key>从左边/右边吐出一个值,那么对应的 list 对象里的值也是少了一个了 - 2.4
rpoplpush <key1><key2>从<key1>列表右边吐出一个值,插到<key2>列表左边 - 2.5
lrange mylist 0 -10 左边第一个,-1 右边第一个,(0-1 表示获取所有) - 2.6
lindex <key><index>按照索引下标获得元素(从左到右) - 2.7
llen <key>获得列表长度 - 2.8
linsert <key> before <value><newvalue>在<value>的前面插入<newvalue>插入值 - 2.9
linsert <key> atfore <value><newvalue>在<value>的后面插入<newvalue>插入值 - 2.10
lrem <key><n><value>从左边删除 n 个 value(从左到右) - 2.11
lset<key><index><value>将列表 key 下标为 index 的值替换成 value
- 2.1
- 3. list 对象的应用场景
- 4. 最后:
list :一句话: list 类型, 保存多个数据,底层使用双向链表存储结构实现 。
list 存储结构示意图:
双向链表示意图:

示意图:说明:
- Redis 列表是简单的字符串列表,按照插入顺序排序,你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
- 底层是个双向链表,对两端的操作性能高,通过索引下标的操作中间的节点性能较差。
- 关于更多双向链表的内容,大家可以移步至: 双向循环带头节点链表 —— C语言_双向循环节点-CSDN博客
关于 list 列表的命令,在 Redis 当中有如下这些:
这里我们介绍一些 list 列表比较常用的一些命令,然后,举一反三,根据文档也可以对其它的命令上手学习使用了 。
2. list 列表常用指令(详细讲解说明)
2.1 lpush/rpush <key><value1><value2><value3> .... 从左边/右边插入一个或多个值

注意:同时是会创建一个 list 对象的
127.0.0.1:6379> lpush k9 "a" "b" "c"


127.0.0.1:6379> rpush k10 "a" "b" "c"

2.2 lrange <key><start><stop> 按照索引下标获得元素(从左到右)

注意:
lreage list 0 -1就是获取到该 list 的从开头到结尾的全部内容了。
127.0.0.1:6379> lrange k10 0 -1
1) "a"
2) "b"
3) "c"
127.0.0.1:6379> lrange k10 0 1

2.3 lpop/rpop <key> 从左边/右边吐出一个值,那么对应的 list 对象里的值也是少了一个了

127.0.0.1:6379> lpop k9

注意: 列表的头元素。 当
key不存在时,返回nil。


2.4 rpoplpush <key1><key2>从<key1> 列表右边吐出一个值,插到<key2>列表左边

127.0.0.1:6379> rpoplpush k9 k10

2.5 lrange mylist 0 -1 0 左边第一个,-1 右边第一个,(0-1 表示获取所有)
2.6 lindex <key><index> 按照索引下标获得元素(从左到右)

127.0.0.1:6379> lindex k10 1

2.7 llen <key>获得列表长度

127.0.0.1:6379> llen k10

2.8 linsert <key> before <value><newvalue>在<value>的前面插入<newvalue>插入值

127.0.0.1:6379> linsert k9 before "b" "tom"

2.9 linsert <key> atfore <value><newvalue>在<value>的后面插入<newvalue>插入值
127.0.0.1:6379> linsert k9 after "b" "jack"

2.10 lrem <key><n><value>从左边删除 n 个 value(从左到右)


127.0.0.1:6379> lrem k9 1 "b"


2.11 lset<key><index><value> 将列表 key 下标为 index 的值替换成 value


注意: 当
index参数超出范围,或对一个空列表(key不存在)进行 LSET 时,返回一个错误。

3. list 对象的应用场景
redis 当中 list 对象 应用于具有操作先后顺序的数据控制
- 系统通知,按照时间顺序展示,将最近的通知列在前面。

- 其它,比如微信的最近转发,微博的最新关注等。
4. 最后:
“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”
四.1 Redis 五大数据类型/结构的详细说明/详细使用(List 列表数据类型详解和使用)的更多相关文章
- Java程序设计(2021春)——第四章接口与多态课后题(选择题+编程题)答案与详解
Java程序设计(2021春)--第四章接口与多态课后题(选择题+编程题)答案与详解 目录 Java程序设计(2021春)--第四章接口与多态课后题(选择题+编程题)答案与详解 第四章选择题 4.0 ...
- Redis为什么是单线程,高并发快的3大原因详解
出处知乎:https://zhuanlan.zhihu.com/p/58038188 Redis的高并发和快速原因 1.redis是基于内存的,内存的读写速度非常快: 2.redis是单线程的,省去了 ...
- 《手把手教你》系列技巧篇(四十四)-java+ selenium自动化测试-处理https 安全问题或者非信任站点-下篇(详解教程)
1.简介 这一篇宏哥主要介绍webdriver在IE.Chrome和Firefox三个浏览器上处理不信任证书的情况,我们知道,有些网站打开是弹窗,SSL证书不可信任,但是你可以点击高级选项,继续打 ...
- 四:Redis五大数据类型
Redis的五大数据类型 1.string(字符串) string是Redis最基本的类型,你可以理解成与menmcached一模一样的类型,一个key对应一个value string类型是二进制安全 ...
- Java基础学习(一) -- Java环境搭建、数据类型、分支循环等控制结构、简单一维数组详解
一:java概述: 1982年,SUN公司诞生于美国斯坦福大学校园,并于1986年上市,在NASDAQ(纳斯达克:是全美证券商协会自动报价系统)的标识为SUNW,2007年改为JAVA. 2009年4 ...
- 小甲鱼PE详解之IMAGE_OPTIONAL_HEADER32 结构定义即各个属性的作用(PE详解03)
咱接着往下讲解IMAGE_OPTIONAL_HEADER32 结构定义即各个属性的作用! (视频教程:http://fishc.com/a/shipin/jiemixilie/) 接着我们来谈谈 IM ...
- 小甲鱼PE详解之IMAGE_NT_HEADERS结构定义即各个属性的作用(PE详解02)
PE Header 是PE相关结构NT映像头(IMAGE_NT_HEADER)的简称,里边包含着许多PE装载器用到的重要字段.下边小甲鱼将为大家详细讲解哈~ (视频教程:http://fishc.co ...
- java中四种操作(dom、sax、jdom、dom4j)xml方式详解与比较
1)DOM(JAXP Crimson解析器) DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点或信息片断的集合.这个层次结构允许开发人员在树中寻找特 ...
- 【转】C语言中不同的结构体类型的指针间的强制转换详解
C语言中不同类型的结构体的指针间可以强制转换,很自由,也很危险.只要理解了其内部机制,你会发现C是非常灵活的. 一. 结构体声明如何内存的分布, 结构体指针声明结构体的首地址, 结构体成员声明该成员在 ...
- Appium+python自动化(四十二)-Appium自动化测试框架综合实践- 寿终正寝完结篇(超详解)
1.简介 按照上一篇的计划,今天给小伙伴们分享执行测试用例,生成测试报告,以及自动化平台.今天这篇分享讲解完.Appium自动化测试框架就要告一段落了. 2.执行测试用例&报告生成 测试报告, ...
随机推荐
- 51单片机入门:LED灯控制(01)
第一篇博客,博客园注册很久却一直没有好好利用,今天把以前的文章都删掉,就当开个好头吧. 希望在以后的时间中,自己能够认真.努力.珍惜时间. 零基础入门51单片机 单片机(Microcontroller ...
- MySQL之sql_mode
sql_mode是个很容易被忽视的变量,默认值是空值,在这种设置下是可以允许一些非法操作的,比如允许一些非法数据的插入.在生产环境必须将这个值设置为严格模式,所以开发.测试环境的数据库也必须要设置,这 ...
- Natasha v9.0 为 .NET 开发者提供 [热执行] 方案.
项目简介 自 Natasha v9.0 发布起,我将基于 Natasha 的推出热执行方案,这项技术允许基于 控制台(Console) 和新版 Asp.net Core 架构的项目在运行中动态重编译, ...
- 埃尼阿克ENIAC与计算机发展,及信息技术发展史
一.埃尼阿克ENIAC 第二次世界大战期间,国军方为了研发新型的大炮和导弹,设立了"弹道研究实验室".实验室为了计算炮弹弹道,用了200多人加班加点进行计算,速度依感无法达到军方要 ...
- 使用 OpenXML 创建第一个 Word 文档
using DocumentFormat.OpenXml.Packaging; using DocumentFormat.OpenXml.Wordprocessing; public class Op ...
- docker-compose安装mongo
创建目录 [root@localhost tools]# mkdir -p /root/tools/mongo/{data,conf,init} 创建初始化用户脚本 [root@localhost m ...
- RedisTemplate配置的jackson.ObjectMapper里的一个enableDefaultTyping方法过期解决
1.前言 最近升级SpringBoot,从2.1.6版本升级到2.2.6版本,发现enableDefaultTyping方法过期过期了. 该方法是指定序列化输入的类型,就是将数据库里的数据安装一定类型 ...
- 跟着 8.6k Star 的开源数据库,搞 RAG!
过去 9 年里,HelloGitHub 月刊累计收录了 3000 多个开源项目.然而,随着项目数量的增加,不少用户反馈:"搜索功能不好用,找不到想要的项目!" 这让我意识到,仅仅收 ...
- [转]OpenLayers基于Vue项目的搭建
主要内容上次介绍了什么是OpenLayers以及其他的可以GIS工具,这次说说如何基于Vue搭建OpenLayers的项目,并且实现地图的加载. 一.vue项目搭建1.全局安装vue-cil npm ...
- 即时通讯技术文集(第40期):推送技术合集(Part2) [共18篇]
为了更好地分类阅读 52im.net 总计1000多篇精编文章,我将在每周三推送新的一期技术文集,本次是第 40 期. [- 1 -] 一个基于长连接的安全可扩展的订阅/推送服务实现思路 [链接] h ...

