Redis五大資料型別——Set
阿新 • • 發佈:2020-08-29
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唯一),將他的粉絲也放在一個集合中。
於是,就可以實現:
- 共同關注(交集),共同愛好,推薦好友(六度分割理論)