1. 程式人生 > 實用技巧 >Redis五大資料型別——Set

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唯一),將他的粉絲也放在一個集合中。

於是,就可以實現:

  • 共同關注(交集),共同愛好,推薦好友(六度分割理論)