0
点赞
收藏
分享

微信扫一扫

【Redis缓存】第二章:List类型的使用

捡历史的小木板 2022-04-16 阅读 97

数据类型

Redis有哪些数据类型?

redis主要包含5种数据类型:String,List,Set,Zset,Hash,满足大部分的需求。

列表List

简介

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

常用命令

1.lpush/rpush < key>< value1>< value2 >< value3 > 从左边/右边插入一个或多个值。
2.lpop/rpop < key>从左边/右边吐出一个值。值在键在,值光键亡。
3.rpoplpush < key1>< key2>从< key1>列表右边吐出一个值,插到列表左边。
4.lrange < key>< start>< stop> 按照索引下标获得元素(从左到右)
5.lrange mylist 0 -1 0左边第一个,-1右边第一个,(0-1表示获取所有)
6.lindex < key>< index>按照索引下标获得元素(从左到右)
7.llen < key>获得列表长度
8.linsert < key> before < value>< newvalue>在< value>的后面插入< newvalue>插入值
9.lrem < key>< n>< value>从左边删除n个value(从左到右)
10.lset< key>< index>< value>将列表key下标为index的值替换成value

方便记忆顺序:
5 lpush rpush lpop rpop rpoplpush
3 lrange lindex lset
3 llen linsert lrem

数据结构

1.List的数据结构为快速链表quickList。
2.首先在列表元素较少的情况下会使用一块连续的内存存储,这个结构是ziplist,也即是压缩列表。
3.它将所有的元素紧挨着一起存储,分配的是一块连续的内存。
4.当数据量比较多的时候才会改成quicklist。
5.因为普通的链表需要的附加指针空间太大,会比较浪费空间。比如这个列表里存的只是int类型的数据,结构上还需要两个额外的指针prev和next。
在这里插入图片描述

6.Redis将链表和ziplist结合起来组成了quicklist。也就是将多个ziplist使用双向指针串起来使用。这样既满足了快速的插入删除性能,又不会出现太大的空间冗余。

实现场景

lpush把值设置到列表的表头(最左边)rpush把值设置到列表的表尾(最右边)lpop从列表头拿掉值(最左边)rpop从列表尾拿掉值(最右边)

Stach(栈):lpush+lpop
Queue(队列):lpush+rpop
Blocking MQ(阻塞队列):lpush + brpop
微博消息和微信公众号文章,我关注了MacTalk和备胎说车,MacTalk先发了一篇文章,文章id为10018,备胎说车后发了一篇文章,文章id为10086

查看最新消息,LRANGE msg:{我的用户id} 0 4//查看自己订阅文章的最新五篇

可以实现简单的消息队列,另外可以利用lrange命令,做基于redis的分页功能

【Redis缓存】第一章:String类型的使用
【Redis缓存】第三章:Set类型的使用
【Redis缓存】第四章:Hash类型的使用
【Redis缓存】第五章:Zset类型的使用

举报

相关推荐

Redis第二章之键类型

第二章 Redis高级

复习第二章之Redis

TypeScript 第二章

第二章 翻译

第二章 IDLE

0 条评论