Redis 五大数据类型之Set

上篇文章中我们了解了Redis的五大基础类型中的String,没有查看的小伙伴可以去查看一下,废话不多说上正题。

Set

Redis中 Set 的命令开头都是以s 开头的。

set中的值是不能重复的

127.0.0.1:6379> sadd myset hello   # 向set集合中添加元素
(integer) 1
127.0.0.1:6379> sadd myset shiweichao
(integer) 1
127.0.0.1:6379> smembers myset    # 查看set集合中的元素
1) "shiweichao"
2) "hello"
127.0.0.1:6379> sismember myset hello  # 判断set集合中是否拥有某个元素,存在则返回 1 ,不存在则返回 0
(integer) 1
127.0.0.1:6379> sismember muset woed
(integer) 0
127.0.0.1:6379> 

##############################################
# 获取set集合中元素中的个数
127.0.0.1:6379> scard myset  # 获取set集合中元素的个数
(integer) 2

##############################################
# 移除set集合中的元素值
127.0.0.1:6379> srem myset hello  # 移除set集合中的指定元素
(integer) 1

##############################################
set 无序不随机,抽随机

127.0.0.1:6379> smembers myset
1) "shiweichao"
2) "shiweichao2"
3) "shiweichao4"
4) "shiweichao3"
127.0.0.1:6379> srandmember myset  # 随机抽取一个元素
"shiweichao"
127.0.0.1:6379> srandmember myset
"shiweichao4"
127.0.0.1:6379> srandmember myset
"shiweichao2"
127.0.0.1:6379> srandmember myset
"shiweichao"
127.0.0.1:6379> srandmember myset
"shiweichao3"
127.0.0.1:6379> 
127.0.0.1:6379> srandmember myset 2  # 随机抽取指定个数的元素
1) "shiweichao2"
2) "shiweichao3"
127.0.0.1:6379> srandmember myset 2
1) "shiweichao"
2) "shiweichao2"
127.0.0.1:6379> srandmember myset 2
1) "shiweichao"
2) "shiweichao2"
127.0.0.1:6379> 

#############################################################
# 删除指定的key ,随机删除key

127.0.0.1:6379> spop myset   # 随机删除set集合中的元素
"shiweichao4"
127.0.0.1:6379> spop myset
"shiweichao"
127.0.0.1:6379> smembers myset
1) "shiweichao2"
2) "shiweichao3"
127.0.0.1:6379> 


#############################################################

# 将一个指定的值,移动到另外的一个集合

127.0.0.1:6379> sadd myset test
(integer) 1
127.0.0.1:6379> sadd myset test2
(integer) 1
127.0.0.1:6379> sadd myset test3
(integer) 1
127.0.0.1:6379> sadd myset2 set2
(integer) 1
127.0.0.1:6379> keys *
1) "myset"
2) "myset2"
127.0.0.1:6379> smove myset myset2 test   # 将指定的一个集合中的值,移动到另外一个集合中
(integer) 1
127.0.0.1:6379> smembers myset2
1) "set2"
2) "test"
127.0.0.1:6379> 

#############################################################
微博,B站,共同关注(交集)
数字集合类:
- 差集
- 交集
- 并集

127.0.0.1:6379> sadd key1 a
(integer) 1
127.0.0.1:6379> sadd key1 b
(integer) 1
127.0.0.1:6379> sadd key1 c
(integer) 1
127.0.0.1:6379> sadd key2 c
(integer) 1
127.0.0.1:6379> sadd key2 d
(integer) 1
127.0.0.1:6379> sadd key2 e
(integer) 1
127.0.0.1:6379> SDIFF key1 key2   # 差集
1) "b"
2) "a"
127.0.0.1:6379> SINTER key1 key2  # 交集
1) "c"
127.0.0.1:6379> SUNION key1 key2  # 并集
1) "a"
2) "c"
3) "b"
4) "d"
5) "e"
127.0.0.1:6379> 

例子:微博,A用户将所有关注的人放在一个set集合中,将他的粉丝也放在一个集合中。

​ 共同关注,共同爱好,二度好友,推荐好友

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Redis有五种主要的数据类型,它们分别是字符串(string)、哈希(hash)、列表(list)、集合(set)和有序集合(sorted set),它们之间的区别如下: 1. 字符串(string):字符串是 Redis 最基础的数据类型,它存储的是一个字符串值,可以是数字、字符、二进制数据等。字符串类型支持的操作包括设置和获取值、对值进行加、减、乘、除等运算、对值进行位操作等。 2. 哈希(hash):哈希类型是一种键值对类型,它存储的是一个键值对集合,其中键和值都是字符串类型的数据。哈希类型支持的操作包括设置和获取值、删除键值对、获取所有键值对等。 3. 列表(list):列表类型是一种链表结构,它存储的是一个有序的元素集合,每个元素都是一个字符串。列表类型支持的操作包括在列表的头部或尾部插入元素、在列表中删除元素、获取列表的长度、获取列表中的元素等。 4. 集合(set):集合类型是一个无序的元素集合,每个元素都是一个字符串。集合类型支持的操作包括向集合中添加元素、从集合中删除元素、获取集合中的元素个数、判断一个元素是否在集合中等。 5. 有序集合(sorted set):有序集合类型也是一个元素集合,每个元素都是一个字符串,但是它们和集合类型不同的是,有序集合中的元素是有序的,并且每个元素都有一个分数值。有序集合类型支持的操作包括向集合中添加元素、从集合中删除元素、获取集合中的元素个数、根据分数值范围获取元素等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值