Redis五大数据类型——Set

Redis五大数据类型——Set

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

127.0.0.1:6379> sadd set v1		# set的底层是hashtable,返回插入元素的个数
(integer) 1
127.0.0.1:6379> sadd set v2
(integer) 1
127.0.0.1:6379> sadd set v3
(integer) 1
127.0.0.1:6379> SMEMBERS set		# 查看指定set中的所有元素
1) "v1"
2) "v2"
3) "v3"
127.0.0.1:6379> SADD set v1		# 添加重复的值就会失败,返回0
(integer) 0
127.0.0.1:6379> SISMEMBER set v1	# 查看指定set中的元素是否存在,存在返回1,不存在返回0
(integer) 1
127.0.0.1:6379> SISMEMBER set v4
(integer) 0

127.0.0.1:6379> SCARD set		# 查看set的大小,个数
(integer) 3

127.0.0.1:6379> SREM set v1		# 移除set中的指定元素
(integer) 1
127.0.0.1:6379> SCARD set
(integer) 2
127.0.0.1:6379> SMEMBERS set
1) "v2"
2) "v3"
127.0.0.1:6379> SADD set v1 v4
(integer) 2

127.0.0.1:6379> SRANDMEMBER set		# 随机取元素
"v2"
127.0.0.1:6379> SRANDMEMBER set
"v1"
127.0.0.1:6379> SRANDMEMBER set
"v2"
127.0.0.1:6379> SRANDMEMBER set
"v3"
127.0.0.1:6379> SRANDMEMBER set 2	# 随机取指定个数的元素
1) "v3"
2) "v4"
127.0.0.1:6379> SPOP set 		# 随机移除元素,返回移除的元素
"v3"
127.0.0.1:6379> SMEMBERS set
1) "v1"
2) "v2"
3) "v4"

# ================
127.0.0.1:6379> sadd set1 v1 v2 v3
(integer) 3
127.0.0.1:6379> sadd set2 v4 v5 v6
(integer) 3
127.0.0.1:6379> SMOVE set1 set2 v1	# 将一个集合的指定元素,移动到另外的集合中去,(栈顶)
(integer) 1
127.0.0.1:6379> SMEMBERS set1
1) "v2"
2) "v3"
127.0.0.1:6379> SMEMBERS set2
1) "v1"
2) "v6"
3) "v5"
4) "v4"

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

127.0.0.1:6379> sadd k1 v1 v2 v3
(integer) 3
127.0.0.1:6379> sadd k2 v3 v4 v5
(integer) 3
127.0.0.1:6379> SDIFF k1 k2		# 得到在k1集合中,而不在k2集合中的元素
1) "v1"
2) "v2"
127.0.0.1:6379> SINTER k1 k2		# 得到两个集合中的交集
1) "v3"
127.0.0.1:6379> SUNION k1 k2		# 并集
1) "v2"
2) "v5"
3) "v3"
4) "v4"
5) "v1"

微博,A用户在所有关注的人房子啊一个set集合中(用户id唯一),将他的粉丝也放在一个集合中。

于是,就可以实现:

  • 共同关注(交集),共同爱好,推荐好友(六度分割理论)
原文地址:https://www.cnblogs.com/liuhuan086/p/13581422.html