Set是集合,它是string類型的無序集合。set是通過hash table實作的,添加删除和查找的負責度都是0(1)。對集合我們可以取并集,交集、差集。通過這些操作我們可以實作QQ和微網誌中的好友推薦和blog的tag功能。
sadd:向名稱為key的set中添加元素
1
2
3
4
5
6
<code>127.0.0.1:6379> sadd myset1 one</code>
<code>(integer) 1</code>
<code>127.0.0.1:6379> sadd myset1 two</code>
<code>(integer) 0</code>
smembers: 檢視集合中的所有元素
<code>127.0.0.1:6379> smembers myset1</code>
<code>1) </code><code>"two"</code>
<code>2) </code><code>"one"</code>
srem:删除集合中的元素
7
8
<code>127.0.0.1:6379> sadd myset2 </code><code>"one"</code>
<code>127.0.0.1:6379> sadd myset2 </code><code>"two"</code>
<code>127.0.0.1:6379> srem myset2 </code><code>"one"</code>
<code>127.0.0.1:6379> smembers myset2</code>
spop:随機傳回并删除名稱為key的set中的一個元素
9
<code>2) </code><code>"three"</code>
<code>3) </code><code>"one"</code>
<code>127.0.0.1:6379> spop myset2</code>
<code>"two"</code>
<code>1) </code><code>"three"</code>
sdiff:傳回所有給定key與第一個key的差集
10
11
12
13
<code>127.0.0.1:6379> smembers myset3</code>
<code>2) </code><code>"four"</code>
<code>3) </code><code>"three"</code>
<code>4) </code><code>"one"</code>
<code>127.0.0.1:6379> </code><code>sdiff</code> <code>myset3 myset2</code>
<code>127.0.0.1:6379> </code><code>sdiff</code> <code>myset2 myset3</code>
<code>(empty list or </code><code>set</code><code>)</code>
注意sdiff myset2 myset3 與 sdiff myset3 myset2的差別
sdiffstore:傳回所有給定key與第一個key的差集,并将結果存為另一個key
<code>127.0.0.1:6379> sdiffstore myset4 myset3 myset2</code>
<code>(integer) 2</code>
<code>127.0.0.1:6379> smembers myset4</code>
sinter:傳回所有給定key的交集
<code>127.0.0.1:6379> sinter myset2 myset3</code>
sinterstore:傳回所有給定key的交集,并将結果存為另一個key
<code>127.0.0.1:6379> sinterstore myset5 myset2 myset3</code>
<code>127.0.0.1:6379> smembers myset5</code>
sunion:傳回所有給定key的并集
<code>127.0.0.1:6379> sunion myset2 myset3</code>
<code>1) </code><code>"four"</code>
<code>4) </code><code>"two"</code>
suionstore:傳回所有給定key的并集,并将結果存為另一個key
14
15
<code>127.0.0.1:6379> sunionstore myset6 myset2 myset3</code>
<code>(integer) 4</code>
<code>127.0.0.1:6379> smembers myset6 </code>
smove:從第一個key對應的set中移除member并添加到第二個對應的set中
16
17
18
<code>127.0.0.1:6379> smove myset3 myset2 two</code>
scard:傳回名稱為key的集合的元素個數
<code>127.0.0.1:6379> scard myset3</code>
<code>(integer) 3</code>
sismember:測試member是否是名稱為key的set的元素,如果是則傳回1,否則傳回0
<code>127.0.0.1:6379> sismember myset3 one</code>
<code>127.0.0.1:6379> sismember myset3 two</code>
srandmember:随機傳回名稱為key的set的一個元素,但不删除元素
<code>srandmember key [count]</code>
<code>127.0.0.1:6379> srandmember myset3 </code>
<code>"one"</code>
<code>"four"</code>
<code>"three"</code>
還可以傳遞count參數來一次随機獲得多個元素。根據count值不同,意義也不相同
1、count為正數時,會随機從集合中獲得count個不重複元素,如果count值大于集合元素的個數,則傳回集合中所有元素
2、count為負數時,srandmember會随機從集合中傳回|count|個元素,這些元素可能會重複
19
20
<code>127.0.0.1:6379> smembers myset3 </code>
<code>127.0.0.1:6379> srandmember myset3 5</code>
<code>127.0.0.1:6379> srandmember myset3 2</code>
<code>127.0.0.1:6379> srandmember myset3 -2</code>
<code>1) </code><code>"one"</code>
<code></code>
本文轉自 曾哥最愛 51CTO部落格,原文連結:http://blog.51cto.com/zengestudy/1859705,如需轉載請自行聯系原作者