文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

Redis列表与集合怎么使用

2023-06-19 13:02

关注

这篇文章主要讲解了“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 -11) "v3"2) "v2"3) "v1"

RPUSH

RPUSH与LPUSH的功能基本一致,不同的是RPUSH的中的value值是按照从右到左的顺序依次插入,如下:

127.0.0.1:6379> RPUSH k2 1 2 3 4 5(integer) 5127.0.0.1:6379> LRANGE k2 0 -11) "1"2) "2"3) "3"4) "4"5) "5"

RPOP

RPOP命令可以移除并返回列表key的尾元素。如下:

127.0.0.1:6379> RPOP k2"5"127.0.0.1:6379> LRANGE k2 0 -11) "1"2) "2"3) "3"4) "4"

LPOP

LPOP和RPOP类似,不同的是LPOP移除并返回列表key的头元素,如下:

127.0.0.1:6379> LPOP k2"1"127.0.0.1:6379> LRANGE k2 0 -11) "2"2) "3"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 -11) "v3"2) "v2"3) "v1"127.0.0.1:6379> LTRIM k1 0 1OK127.0.0.1:6379> LRANGE k1 0 -11) "v3"2) "v2"

BLPOP

BLPOP是阻塞式列表的弹出原语。它是命令LPOP的阻塞版本,当给定列表内没有任何元素可供弹出的时候,连接将被BLPOP命令阻塞。当给定多个key参数时,按参数key的先后顺序依次检查各个列表,弹出第一个非空列表的头元素。同时,在使用该命令时也需要指定阻塞的时长,时长单位为秒,在该时长内如果没有元素可供弹出,则阻塞结束。返回的结果是key和value的组合,如下:

127.0.0.1:6379> BLPOP k1 101) "k1"2) "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) 1127.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 k11) "v4"2) "v1"3) "v3"

SRANDMEMBER

SRANDMEMBER仅需我们提供key参数,它就会随机返回key集合中的一个元素,从Redis2.6开始,该命令也可以接受一个可选的count参数,如果count是整数且小于元素的个数,则返回count个随机元素,如果count是整数且大于集合中元素的个数时,则返回集合中的所有元素,当count是负数,则会返回一个包含count的绝对值的个数元素的数组,如果count的绝对值大于元素的个数,则返回的结果集里会出现一个元素出现多次的情况。如下:

127.0.0.1:6379> SRANDMEMBER k1"v4"127.0.0.1:6379> SRANDMEMBER k1 21) "v4"2) "v1"127.0.0.1:6379> SRANDMEMBER k1 51) "v4"2) "v1"3) "v3"127.0.0.1:6379> SRANDMEMBER k1 -11) "v4"127.0.0.1:6379> SRANDMEMBER k1 -51) "v3"2) "v1"3) "v1"4) "v3"5) "v3"

SPOP

SPOP命令的用法和SRANDMEMBER类似,不同的是,SPOP每次选择一个随机的元素之后,该元素会出栈,而SRANDMEMBER则不会出栈,只是将该元素展示出来。

SMOVE

SMOVE命令可以将member从source集合移动到destination集合中,如下:

127.0.0.1:6379> SMOVE k1 k2 v1(integer) 1127.0.0.1:6379> SMEMBERS k11) "v4"2) "v3"127.0.0.1:6379> SMEMBERS k21) "v1"

SDIFF

SDIFF可以用来返回一个集合与给定集合的差集的元素,如下:

127.0.0.1:6379> SDIFF k1 k21) "v4"2) "v3"

k1中的元素是v3、v4,k2中的元素是v1,差集就是v3、v4.

SDIFFSTORE

SDIFFSTORE命令与SDIFF命令基本一致,不同的是SDIFFSTORE命令会将结果保存在一个集合中,如下:

127.0.0.1:6379> SDIFFSTORE key k1 k2(integer) 2127.0.0.1:6379> SMEMBERS key1) "v4"2) "v3"

SINTER

SINTER命令可以用来计算指定key之间元素的交集,如下:

127.0.0.1:6379> SMEMBERS k11) "v4"2) "v3"127.0.0.1:6379> SMEMBERS k21) "v1"2) "v3"127.0.0.1:6379> SINTER k1 k21) "v3"

SINTERSTORE

SINTERSTORE命令和SINTER命令类似,不同的是它会将结果保存到一个新的集合中,如下:

127.0.0.1:6379> SINTERSTORE k3 k1 k2(integer) 1127.0.0.1:6379> SMEMBERS k31) "v3"

SUNION

SUNION可以用来计算两个集合的并集,如下:

127.0.0.1:6379> SUNION k1 k21) "v4"2) "v1"3) "v3"

SUNIONSTORE

SUNIONSTORE和SUNION命令类似,不同的是它会将结果保存到一个新的集合中,如下:

127.0.0.1:6379> SUNIONSTORE k4 k1 k2(integer) 3127.0.0.1:6379> SMEMBERS k41) "v4"2) "v1"3) "v3"

感谢各位的阅读,以上就是“Redis列表与集合怎么使用”的内容了,经过本文的学习后,相信大家对Redis列表与集合怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯