set中的值是无序不重复的集合

set的操作以 s 开头

flushall 开始下面的操作。

添加

1
2
3
4
sadd myset "hello"
sadd myset "world "
sadd myset "hello" # 因为不能重复,所以这个值不会被添加
smembers myset # 查看的命令

查看

1
2
3
4
5
6
# 查看所有成员
smembers myset
# 查看某个value是不是set中的成员 sismember set value
sismember myset hello
# 查看set集合中的个数
scard myset

移除

1
2
3
# srem 
srem myset hello
smembers myset

随机抽取

可以应用于一些抽奖的环节

1
2
3
4
5
6
7
8
# 做些准备
sadd myset 1 2 3 4 5 6 7 8 9
smembers myset
# srandmember
srandmember myset

# 随机删除key
spop myset

将一个指定的值移动到另外一个set中

1
smove myset myset1 value

集合操作

  • 差集

    1
    2
    # 显示set1有而set2没有的值
    sdiff set1 set2
  • 交集

    1
    2
    # 显示set1,set2共有的值
    sinter set1 set2
  • 并集

    1
    2
    # 显示set1,set2都包含进来的值
    sunion set1 set2

应用场景

  • B站,微博中,粉丝共同关注啥的,可以将userA所有关注的人放到一个set集合中,把userA的粉丝也放在一个集合中,实现共同关注,共同好友,推荐好友

  • 可以用来数据去重,保障数据的唯一性