命令 | 含義 | 時間複雜度 |
---|---|---|
sadd | 將一個或多個 member 元素加入到集合 key 當中,已經存在於集合的 member 元素將被忽略 | O(N), N 是被添加的元素的數量。 |
srem | 移除集合 key 中的一個或多個 member 元素,不存在的 member 元素會被忽略。 | O(N), N 爲給定 member 元素的數量 |
smove | 將 member 元素從 A 集合移動到 B 集合 | O(1) |
scard | 集合中元素的數量 | O(1) |
sismember | 判斷 member 元素是否集合 key 的成員 | O(1) |
smembers | 返回集合 key 中的全部成員 | O(N),N 爲集合的基數 |
srandmember | 從集合中隨機挑選指定數量元素返回 | O(N),N 爲返回數組的元素個數 |
spop | 移除並返回集合中的一個隨機元素 | O(1) |
sdiff、sdiffstore | 給定集合之間的差集(將結果保存到新的集合) | O(N),N 是全部給定集合的成員數量之和。 |
sinter、sinterstore | 給定集合之間的交集(將結果保存到新的集合) | O(N * M),N 爲給定集合當中基數最小的集合,M 爲給定集合的個數。 |
sunion、sunionstore | 給定集合之間的並集(將結果保存到新的集合) | O(N), N 是全部給定集合的成員數量之和 |
127.0.0.1:6379> sadd setkey go c c++ c# php java python (integer) 7 127.0.0.1:6379> sadd setkey go (integer) 0 127.0.0.1:6379> sadd setkey matlab c (integer) 1 127.0.0.1:6379> smembers setkey 1) "php" 2) "python" 3) "go" 4) "c++" 5) "matlab" 6) "java" 7) "c" 8) "c#" 127.0.0.1:6379> srem setkey c c++ (integer) 2 127.0.0.1:6379> smembers setkey 1) "matlab" 2) "java" 3) "c#" 4) "go" 5) "python" 6) "php" 127.0.0.1:6379> scard setkey (integer) 6 127.0.0.1:6379> sismember setkey c++ (integer) 0 127.0.0.1:6379> sismember setkey php (integer) 1 127.0.0.1:6379> srandmember setkey 3 1) "go" 2) "python" 3) "java" 127.0.0.1:6379> srandmember setkey 3 1) "go" 2) "java" 3) "c#" 127.0.0.1:6379> spop setkey "matlab" 127.0.0.1:6379> spop setkey "java" 127.0.0.1:6379> smembers setkey 1) "go" 2) "python" 3) "c#" 4) "php"
srandmember 和 spop: spop 從集合中彈出;srandmember 不會破壞集合
示例見下面 實戰 中的 粉絲php
更多 Set 相關命令:http://www.redis.cn/commands....
sadd user:1:tags tag1 tag2 tag5 sadd user:2:tags tag3 tag4 tag5 ... sadd user:n:tags tag1 tag3 tag5
sadd tag:1:users user1 user3 sadd tag:2:users user3 user5 user6 ... sadd tag:n:users user1 user4
127.0.0.1:6379> sadd user:1:follow 2 3 5 6 8 9 (integer) 6 127.0.0.1:6379> sadd user:2:follow 1 3 5 7 8 9 (integer) 6
127.0.0.1:6379> sadd user:1:fans 2 7 9 (integer) 3
127.0.0.1:6379> sdiff user:1:follow user:1:fans 1) "3" 2) "5" 3) "6" 4) "8"
127.0.0.1:6379> sdiff user:1:fans user:1:follow 1) "7"
127.0.0.1:6379> sinter user:1:follow user:1:fans 1) "2" 2) "9" 127.0.0.1:6379> sinterstore user:1:mutual_fans user:1:follow user:1:fans (integer) 2 127.0.0.1:6379> smembers user:1:mutual_fans 1) "2" 3) "9"
127.0.0.1:6379> sinter user:1:follow user:2:follow 1) "3" 2) "5" 3) "8" 4) "9"
127.0.0.1:6379> sunion user:1:follow user:2:follow 1) "1" 2) "2" 3) "3" 4) "5" 5) "6" 6) "7" 7) "8" 8) "9"
sadd = Tagging (標籤)
spop/srandmember = Random item (隨機成員)
sadd + sinter = Social Craph (社交平臺關係)
Redis學習筆記 - 數據類型與API(1)Key
Redis學習筆記 - 數據類型與API(2)String
Redis學習筆記 - 數據類型與API(3)List
Redis學習筆記 - 數據類型與API(4)Set
Redis學習筆記 - 數據類型與API(5)Sorted Set
Redis學習筆記 - 數據類型與API(6)Hashhtml