上篇文章中我们了解了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集合中,将他的粉丝也放在一个集合中。
共同关注,共同爱好,二度好友,推荐好友