前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Redis教程07(Set集合介绍)

Redis教程07(Set集合介绍)

作者头像
用户4919348
发布2019-04-02 11:32:17
4240
发布2019-04-02 11:32:17
举报
文章被收录于专栏:波波烤鸭波波烤鸭

上文介绍的list列表是有序集合,可以保存重复记录,在Redis中的Set集合是无序的,不可以存储重复记录的。本文主要介绍Set集合中的常用命令

集合中最大的成员数为 2^32 - 1 (4294967295, 每个集合可存储40多亿个成员)。

命令

说明

sadd

添加一个或多个元素到集合中,如果集合中存在该元素则忽略

scard

返回集合中的元素的个数

sismember

判断集合中是否含有某元素

smembers

获取集合中的所有的元素

srem

删除集合中指定的元素

srandmember

随机返回集合中的元素,版本2.6后在命令之后可以跟一个count。指定随机返回的元素个数

spop

和srandmember类似,只是spop会将获取的元素移除而srandmember不会移除元素

smove

将元素从一个集合移动到另一个集合中

sdiff

返回两个集合的差集

sdiffstore

和sdiff类似,不同的是会将差集结果保存起来

sinter

获取两个集合的交集

sinterstore

和sinter类似,不同的是将结果保存起来了

sunion

获取两个集合的并集

sunionstore

获取两个集合的并集并保存起来

SADD

添加一个或多个元素到集合中,如果集合中存在该元素则忽略

代码语言:javascript
复制
127.0.0.1:6379> sadd stu zhangsan lisi wangwu lisi zhangsan
(integer) 3

添加了5个元素,但只成功了3个,因为有两个是相同的。

SCard

返回set集合中元素的个数

代码语言:javascript
复制
127.0.0.1:6379> scard stu
(integer) 3

SIsMember

判断集合中是否含有某元素

代码语言:javascript
复制
127.0.0.1:6379> sismember stu zhangsan
(integer) 1 # 含有zhangsan
127.0.0.1:6379> sismember stu zhangsan1
(integer) 0 # 不含有zhangsan1

SMembers

获取集合中的所有的元素

代码语言:javascript
复制
127.0.0.1:6379> smembers stu
1) "lisi"
2) "zhangsan"
3) "wangwu"

SRem

删除集合中指定的元素,如果集合中不含有该元素,则忽略,返回0

代码语言:javascript
复制
127.0.0.1:6379> srem stu lisi
(integer) 1
127.0.0.1:6379> srem stu aa
(integer) 0 # 集合中不含有 aa 返回0
127.0.0.1:6379> smembers stu
1) "zhangsan"
2) "wangwu"

SRandMember

随机返回集合中的元素,redis2.6之后可以在命令后加一个count参数,指定随机返回的元素的个数,如果count大于集合中的个数,则返回所有的元素。负数的话取绝对值

代码语言:javascript
复制
127.0.0.1:6379> srandmember stu
"zhangsan" # 取一个随机值
127.0.0.1:6379> srandmember stu
"bobo"
127.0.0.1:6379> srandmember stu
"dpb"
127.0.0.1:6379> srandmember stu 3
1) "bobo" #取三个随机值
2) "dpb"
3) "wangwu"
127.0.0.1:6379> srandmember stu 3
1) "bobo"
2) "dpb"
3) "lisi"
127.0.0.1:6379> srandmember stu 100
1) "lisi" # 大于总的个数,去所有值
2) "dpb"
3) "bobo"
4) "zhangsan"
5) "wangwu"
127.0.0.1:6379> srandmember stu -2
1) "dpb"  # 负数取绝对值 两个
2) "zhangsan"
127.0.0.1:6379> srandmember stu -2
1) "lisi"
2) "dpb"

Spop

和srandmember类似,只是spop会将获取的元素移除而srandmember不会移除元素|

代码语言:javascript
复制
127.0.0.1:6379> smembers stu
1) "bobo"
2) "zhangsan"
3) "dpb"
4) "lisi"
5) "wangwu"
127.0.0.1:6379> spop stu 2
1) "zhangsan" # 随机获取两个元素并移除
2) "dpb"
127.0.0.1:6379> smembers stu
1) "bobo"
2) "lisi"
3) "wangwu"

SMove

将元素从一个集合移动到另一个集合中

代码语言:javascript
复制
127.0.0.1:6379> smembers stu
1) "bobo"
2) "lisi"
3) "wangwu"
127.0.0.1:6379> 
127.0.0.1:6379> smove stu stu1 bobo
(integer) 1
127.0.0.1:6379> smembers stu
1) "lisi"
2) "wangwu"
127.0.0.1:6379> smembers stu1
1) "bobo"

SDiff

返回两个集合的差集

代码语言:javascript
复制
127.0.0.1:6379> smembers stu
1) "lisi"
2) "wangwu"
127.0.0.1:6379> smembers stu1
1) "bobo"
127.0.0.1:6379> sdiff stu stu1
1) "lisi"
2) "wangwu"
127.0.0.1:6379> sdiff stu1 stu
1) "bobo"

SDiffStore

和sdiff类似,不同的是会将差集结果保存起来

代码语言:javascript
复制
127.0.0.1:6379> sdiffstore stu2 stu1 stu
(integer) 1
127.0.0.1:6379> smembers stu2
1) "bobo"

SInter

获取两个集合的交集

代码语言:javascript
复制
127.0.0.1:6379> smembers stu
1) "lisi"
2) "wangwu"
127.0.0.1:6379> smembers stu2
1) "lisi"
2) "bobo"
127.0.0.1:6379> sinter stu stu2
1) "lisi" #两个集合中都有lisi

SInterStore

获取两个集合的交接并将结果保存起来了。

代码语言:javascript
复制
127.0.0.1:6379> sinterstore stu3 stu stu2
(integer) 1
127.0.0.1:6379> smembers stu3
1) "lisi"

SUnion

获取两个集合的并集。

代码语言:javascript
复制
127.0.0.1:6379> sunion stu stu2
1) "bobo"
2) "lisi"
3) "wangwu"

SunionStore

获取两个集合的并集并保存起来

代码语言:javascript
复制
127.0.0.1:6379> sunionstore stu3 stu stu2
(integer) 3
127.0.0.1:6379> smembers stu3
1) "bobo"
2) "lisi"
3) "wangwu"

~好了本文到此为止 更多资料欢迎参考官网手册

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019年02月12日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • SADD
  • SCard
  • SIsMember
  • SMembers
  • SRem
  • SRandMember
  • Spop
  • SMove
  • SDiff
  • SDiffStore
  • SInter
  • SInterStore
  • SUnion
  • SunionStore
相关产品与服务
云数据库 Redis
腾讯云数据库 Redis(TencentDB for Redis)是腾讯云打造的兼容 Redis 协议的缓存和存储服务。丰富的数据结构能帮助您完成不同类型的业务场景开发。支持主从热备,提供自动容灾切换、数据备份、故障迁移、实例监控、在线扩容、数据回档等全套的数据库服务。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档