前面文章我们介绍了STRING的基本命令,本文我们来看看Redis中的列表与集合。
本文是Redis系列的第五篇文章,了解前面的文章有助于更好的理解本文:
列表是Redis中另外一种数据类型。下面我们来看看列表中一些基本的操作命令。
LPUSH
将一个或多个值value插入到列表key的表头,如果有多个value值,那么各个value值按从左到右的顺序依次插入到表头,如下:
127.0.0.1:6379> LPUSH k1 v1 v2 v3
(integer) 3
LRANGE
返回列表key中指定区间内的元素,区间以偏移量start和stop指定,下标(index)参数start和stop都以0为底,即0表示列表的第一个元素,1表示列表的第二个元素,以此类推。我们也可以使用负数下标,以-1表示列表的最后一个元素, -2 表示列表的倒数第二个元素,以此类推。如下:
127.0.0.1:6379> LRANGE k1 0 -1
-
“v3”
-
“v2”
-
“v1”
RPUSH
RPUSH与LPUSH的功能基本一致,不同的是RPUSH的中的value值是按照从右到左的顺序依次插入,如下:
127.0.0.1:6379> RPUSH k2 1 2 3 4 5
(integer) 5
127.0.0.1:6379> LRANGE k2 0 -1
-
“1”
-
“2”
-
“3”
-
“4”
-
“5”
RPOP
RPOP命令可以移除并返回列表key的尾元素。如下:
127.0.0.1:6379> RPOP k2
“5”
127.0.0.1:6379> LRANGE k2 0 -1
-
“1”
-
“2”
-
“3”
-
“4”
LPOP
LPOP和RPOP类似,不同的是LPOP移除并返回列表key的头元素,如下:
127.0.0.1:6379> LPOP k2
“1”
127.0.0.1:6379> LRANGE k2 0 -1
-
“2”
-
“3”
-
“4”
LINDEX
LINDEX命令可以返回列表key中,下标为index的元素,正数下标0表示第一个元素,也可以使用负数下标,-1表示倒数第一个元素,如下:
127.0.0.1:6379> LINDEX k2 0
“2”
127.0.0.1:6379> LINDEX k2 -1
“4”
LTRIM
LTRIM命令可以对一个列表进行修剪,即让列表只保留指定区间内的元素,不在指定区间之内的元素都将被删除。下标与之前介绍的写法都一致,这里不赘述。如下:
127.0.0.1:6379> LRANGE k1 0 -1
-
“v3”
-
“v2”
-
“v1”
127.0.0.1:6379> LTRIM k1 0 1
OK
127.0.0.1:6379> LRANGE k1 0 -1
-
“v3”
-
“v2”
BLPOP
BLPOP是阻塞式列表的弹出原语。它是命令LPOP的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被BLPOP命令阻塞。当给定多个key参数时,按参数key的先后顺序依次检查各个列表,弹出第一个非空列表的头元素。同时,在使用该命令时也需要指定阻塞的时长,时长单位为秒,在该时长内如果没有元素可供弹出,则阻塞结束。返回的结果是key和value的组合,如下:
127.0.0.1:6379> BLPOP k1 10
-
“k1”
-
“v2”
127.0.0.1:6379> BLPOP k1 10
(nil)
(10.03s)
最后,BRPOP、BPOPLPUSH、BRPOPLPUSH都是相应命令的阻塞版本,这里就不赘述了。
接下来我们来看看集合中一些常见的操作命令:
SADD
SADD命令可以添加一个或多个指定的member元素到集合的key中,指定的一个或者多个元素member如果已经在集合key中存在则忽略,如果集合key不存在,则新建集合key,并添加member元素到集合key中。如下:
127.0.0.1:6379> SADD k1 v1 v2 v3 v4
(integer) 4
SREM
SREM命令可以在key集合中移除指定的元素,如果指定的元素不是key集合中的元素则忽略。如果key集合不存在则被视为一个空的集合,该命令返回0。如下:
127.0.0.1:6379> SREM k1 v2
(integer) 1
127.0.0.1:6379> SREM k1 v10
(integer) 0
SISMEMBER
SISMEMBER命令可以返回成员member是否是存储的集合key的成员。如下:
127.0.0.1:6379> SISMEMBER k1 v3
(integer) 1
SCARD
SCARD命令可以返回集合存储的key的基数(集合元素的数量),如下:
127.0.0.1:6379> SCARD k1
(integer) 3
SMEMBERS
SMEMBERS命令可以返回key集合所有的元素,如下:
127.0.0.1:6379> SMEMBERS k1
-
“v4”
-
“v1”
-
“v3”
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Java工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Java开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Java开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip1024b (备注Java)
最后
笔者已经把面试题和答案整理成了面试专题文档
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-xGPl1vSg-1712805584227)]
[外链图片转存中…(img-vEitO49A-1712805584227)]
[外链图片转存中…(img-mHkIr8pw-1712805584228)]
[外链图片转存中…(img-G1x2FoaI-1712805584228)]
[外链图片转存中…(img-JGLNFwWr-1712805584228)]
[外链图片转存中…(img-eIdc7eyB-1712805584228)]
一个人可以走的很快,但一群人才能走的更远。不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎扫码加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
[外链图片转存中…(img-Mjp7UOsv-1712805584229)]