天天看點

Redis無序集合資料類型操作指令

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&gt; sadd myset1 one</code>

<code>(integer) 1</code>

<code>127.0.0.1:6379&gt; sadd myset1 two</code>

<code>(integer) 0</code>

smembers: 檢視集合中的所有元素

<code>127.0.0.1:6379&gt; smembers myset1</code>

<code>1) </code><code>"two"</code>

<code>2) </code><code>"one"</code>

srem:删除集合中的元素

7

8

<code>127.0.0.1:6379&gt; sadd myset2 </code><code>"one"</code>

<code>127.0.0.1:6379&gt; sadd myset2 </code><code>"two"</code>

<code>127.0.0.1:6379&gt; srem myset2 </code><code>"one"</code>

<code>127.0.0.1:6379&gt; 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&gt; 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&gt; 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&gt; </code><code>sdiff</code> <code>myset3 myset2</code>

<code>127.0.0.1:6379&gt; </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&gt; sdiffstore myset4 myset3 myset2</code>

<code>(integer) 2</code>

<code>127.0.0.1:6379&gt; smembers myset4</code>

sinter:傳回所有給定key的交集

<code>127.0.0.1:6379&gt; sinter myset2 myset3</code>

sinterstore:傳回所有給定key的交集,并将結果存為另一個key

<code>127.0.0.1:6379&gt; sinterstore myset5 myset2 myset3</code>

<code>127.0.0.1:6379&gt; smembers myset5</code>

sunion:傳回所有給定key的并集

<code>127.0.0.1:6379&gt; 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&gt; sunionstore myset6 myset2 myset3</code>

<code>(integer) 4</code>

<code>127.0.0.1:6379&gt; smembers myset6 </code>

smove:從第一個key對應的set中移除member并添加到第二個對應的set中

16

17

18

<code>127.0.0.1:6379&gt; smove myset3 myset2 two</code>

scard:傳回名稱為key的集合的元素個數

<code>127.0.0.1:6379&gt; scard myset3</code>

<code>(integer) 3</code>

sismember:測試member是否是名稱為key的set的元素,如果是則傳回1,否則傳回0

<code>127.0.0.1:6379&gt; sismember myset3 one</code>

<code>127.0.0.1:6379&gt; sismember myset3 two</code>

srandmember:随機傳回名稱為key的set的一個元素,但不删除元素

<code>srandmember key [count]</code>

<code>127.0.0.1:6379&gt; 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&gt; smembers myset3 </code>

<code>127.0.0.1:6379&gt; srandmember myset3 5</code>

<code>127.0.0.1:6379&gt; srandmember myset3 2</code>

<code>127.0.0.1:6379&gt; srandmember myset3 -2</code>

<code>1) </code><code>"one"</code>

<code></code>

本文轉自 曾哥最愛 51CTO部落格,原文連結:http://blog.51cto.com/zengestudy/1859705,如需轉載請自行聯系原作者

繼續閱讀