国庆小复习,Redis中的List

15 篇文章 6 订阅

1.前言

今天是2022年10月5日已经是国庆的第5天了,不知道的各位读者朋友的假期时光是否愉快,在快活的同时各位读者朋友记得不要耽搁了学习,假期可是弯道超车的好机会,今天小编就带领大家一起复习一遍Redis中的五大数据类型之一的List的一些基础命令。
在这里插入图片描述

Redis中的五大类型

在开篇之前防止一些小傻蛋连Redis中的五大类型都不记得了,这里小编还是简单的介绍一下Redia中的五大类型,分别是 String类型也就是字符串类型和 Hash类型List类型 , Setl类型,zset类型,不知道觉得生涩的小伙伴们是否回忆起了与它们的点滴。

2.常用命令

List类型我们也常称为列表类型,以单键多值的方式存储在数据库中。Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。
它的底层实际是个双向链表,对两端的操作性能很高,通过索引下标的操作中间的节点性能会较差。
大家在使用的过程中可以考虑好业务需求再做决定。

1. lpush {key} {value1} {value2} {value3}

使用 lpush <key><value1><value2><value3> 命令可以列表的左边插入一个或者多个值 key就是列表名
如果该列表不存在 则以指定的key生成一个列表 对应的值则成为列表中的数据
假如执行  lpush kk v1 v2 v3  存储在数据库中的结构则是 v3 v2 v1

2. rpush {key} {value1} {value2} {value3}

使用 rpush <key><value1><value2><value3> 命令可以列表的右边插入一个或者多个值 key就是列表名
如果该列表不存在 则以指定的key生成一个列表 对应的值则成为列表中的数据
假如执行 lpush cc c1 c2 c3 储存在数据库中的结构则是 c1 c2 c3

3. lrange {key} {start} {stop}

使用 lrange <key><start><stop> 从对应的列表中个根据起始索引和结束索引从左边取值
如果指定的列表不存在则什么也不返回
索引从 0 开始 -1 则表示 右边第一个 包前 包后
则执行 lrange 列表名 0 -1 则会取出列表中所有数据

4. lpop {key}

使用 lpop <key> 从对应列表的左边弹出一个值 弹出的值将不存在列表中
如果执行多次将列表中的值全部弹出 则列表页将不存在

5. rpop {key}

使用 rpop <key> 从对应列表的右边弹出一个值 弹出的值将不存在列表中
如果执行多次将列表中的值全部弹出 则列表页将不存在

6. llen {key}

使用 llen <key> 获取指定列表的长度
如果列表不存在则返回 0

7. rpoplpush {key1} {key2}

使用 rpoplpush  <key1><key2> 从key1列表右边弹出一个值插到key2的左边
弹出的值将不存在原列表中

8. lindex {key} {index}

使用 lindex <key> <index> 按照指定的索引下标 从左到右获取指定列表中的元素

9. linsert {key} before {value} {newvalue}

使用 linsert <key>  before <value><newvalue> 在指定表的某个值后面插入一个值

10. linsert {key} after {value} {newvalue}

使用 linsert <key> after <value><newvalue> 在指定表的某个值后面插入一个值

11. lrem {key} {n} {value}

使用 lrem <key><n><value> 从指定列表的左边删除n个指定的值
关于这个 {value}  比如列表中有多个重复的值 则就会删除n个这样的值 而不是按照顺序删

12. lset {key} {index} {value}

将指定列表的指定索引的值替换为新的值

3.List底层数据结构

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

4.结尾

这次的博客就演示到这里了,建议不熟悉的读者朋友可以动手尝试尝试,如果有一遗漏和错误的地方,欢迎各位读者朋友在评论区中提出来,同时也提醒大家假期不要忘了学习哦,最后小编祝大家假期愉快!!!
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值