redis 集合操作

SADD key member


将member元素加入到集合key当中。


如果member元素已经是该集合的成员,那SADD命令不执行任何操作。

假如key不存在,则创建一个只包含member元素作成员的集合。

当key不是集合类型时,返回一个错误。


时间复杂度:

    O(1)

返回值:

    如果添加元素成功,返回1。

    如果元素已经是集合的成员,返回0。


 

Redis代码   收藏代码
  1. "font-size: small;">redis> SADD bbs "v2ex.com"  
  2. (integer) 1  
  3. redis> SADD bbs "codecompo.com"  
  4. (integer) 1  
  5.   
  6. redis> SMEMBERS bbs     # 显示bbs集合中所有成员  
  7. 1"codecompo.com"  
  8. 2"v2ex.com"  
  9.   
  10. redis> SADD bbs "v2ex.com"  # 尝试添加重复元素,返回0  
  11. (integer) 0  

 




SINTER key [key ...]


返回一个集合的全部成员,该集合是所有给定集合的交集。


不存在的key被视为空集。

当给定集合当中有一个空集时,结果也为空集(根据集合运算定律)。


时间复杂度:

    O(N * M),N为给定集合当中基数最小的集合,M为给定集合的个数。

返回值:

    交集成员的列表。


 

Redis代码   收藏代码
  1. "font-size: small;">redis> SMEMBERS group_1  
  2. 1"LI LEI"  
  3. 2"TOM"  
  4. 3"JACK"   # <-  
  5.   
  6. redis> SMEMBERS group_2  
  7. 1"HAN MEIMEI"  
  8. 2"JACK"   # <-  
  9.   
  10. redis> SINTER group_1 group_2  
  11. 1"JACK"  

 

 

 


SMOVE source destination member

 

将member元素从source集合移动到destination集合。

 

SMOVE是原子性操作。

如果source集合不存在或不包含指定的member元素,则SMOVE命令不执行任何操作,仅返回0。否则,member元素从source集合中被移除,并添加到destination集合中去。

当destination集合已经包含member元素时,SMOVE命令只是简单地将source集合中的member元素删除。

当source或destination不是集合类型时,返回一个错误。

 

复杂度:

    O(1)

返回值:

    如果member元素被成功移除,返回1。

    如果member元素不是source集合的成员,并且没有任何操作对destination集合执行,那么返回0。

 

 

Redis代码   收藏代码
  1. redis> SMEMBERS songs  
  2. 1"Billie Jean"  
  3. 2"Believe Me"  
  4.   
  5. redis> SMEMBERS my_songs  
  6. (empty list or set)  
  7.   
  8. redis> SMOVE songs my_songs "Believe Me"  
  9. (integer) 1  
  10.   
  11. redis> SMEMBERS songs  
  12. 1"Billie Jean"  
  13.   
  14. redis> SMEMBERS my_songs  
  15. 1"Believe Me"  

 

 


SUNION key [key ...]

 

返回一个集合的全部成员,该集合是所有给定集合的并集。

 

不存在的key被视为空集。

 

复杂度:

    O(N),N是所有给定集合的成员数量之和。

返回值:

    并集成员的列表。

 

 

Redis代码   收藏代码
  1. redis> SMEMBERS songs  
  2. 1"Billie Jean"  
  3.   
  4. redis> SMEMBERS my_songs  
  5. 1"Believe Me"  
  6.   
  7. redis> SUNION songs my_songs  
  8. 1"Billie Jean"  
  9. 2"Believe Me"  
 

 


SCARD key

 

返回集合的基数(集合中元素的数量)。

 

复杂度:

    O(1)

返回值:

    集合的基数。

    当key不存在时,返回0。

 

 

Redis代码   收藏代码
  1. redis> SMEMBERS tool  
  2. 1"pc"  
  3. 2"printer"  
  4. 3"phone"  
  5.   
  6. redis> SCARD tool  
  7. (integer) 3  
  8.   
  9. redis> SMEMBERS fake_set  
  10. (empty list or set)  
  11.   
  12. redis> SCARD fake_set  
  13. (integer) 0  

 

 


SINTERSTORE destination key [key ...]

 

此命令等同于SINTER,但它将结果保存到destination集合,而不是简单地返回结果集。

 

如果destination集合已经存在,则将其覆盖。

 

时间复杂度:

    O(N * M),N为给定集合当中基数最小的集合,M为给定集合的个数。

返回值:

    结果集中的元素数量。

 

 

Redis代码   收藏代码
  1. redis> SMEMBERS songs  
  2. 1"good bye joe"   # <-  
  3. 2"hello,peter"  
  4.   
  5. redis> SMEMBERS my_songs  
  6. 1"good bye joe"   # <-  
  7. 2"falling"  
  8.   
  9. redis> SINTERSTORE song_and_my_song songs my_songs  
  10. (integer) 1  
  11.   
  12. redis> SMEMBERS song_and_my_song  
  13. 1"good bye joe"  

 

 


SPOP key

 

移除并返回集合中的一个随机元素。

 

复杂度:

    O(1)

返回值:

    被移除的随机元素。

    当key不存在或key是空集时,返回nil。

 

 

Redis代码   收藏代码
  1. redis> SMEMBERS my_sites  
  2. 1"huangz.iteye.com"  
  3. 2"sideeffect.me"  
  4. 3"douban.com/people/i_m_huangz"  
  5.   
  6. redis> SPOP my_sites  
  7. "huangz.iteye.com"  
  8.   
  9. redis> SMEMBERS my_sites  
  10. 1"sideeffect.me"  
  11. 2"douban.com/people/i_m_huang"  

 

 


SUNIONSTORE destination key [key ...]

 

此命令等同于SUNION,但它将结果保存到destination集合,而不是简单地返回结果集。

 

如果destination已经存在,则将其覆盖。

 

复杂度:

    O(N),N是所有给定集合的成员数量之和。

返回值:

    结果集中的元素数量。

 

 

Redis代码   收藏代码
  1. redis> SMEMBERS ms_sites  
  2. 1"microsoft.com"  
  3. 2"skype.com"  
  4.   
  5. redis> SMEMBERS google_sites  
  6. 1"youtube.com"  
  7. 2"google.com"  
  8.   
  9. redis> SUNIONSTORE google_and_ms_sites ms_sites google_sites  
  10. (integer) 4  
  11.   
  12. redis> SMEMBERS google_and_ms_sites  
  13. 1"microsoft.com"  
  14. 2"skype.com"  
  15. 3"google.com"  
  16. 4"youtube.com"  
 

 


SDIFF key [key ...]

 

返回一个集合的全部成员,该集合是第一个给定集合和其他所有给定集合的差集 。

 

不存在的key被视为空集。

 

复杂度:

    O(N),N是所有给定集合的成员数量之和。

返回值:

    交集成员的列表。

 

 

Redis代码   收藏代码
  1. redis> SMEMBERS peter's_movies  
  2. 1"bet man"  
  3. 2"start war"  
  4. 3"2012"   # <-  
  5.   
  6. redis> SMEMBERS joe's_movies  
  7. 1"hi, lady"  
  8. 2"Fast Five"  
  9. 3"2012"   # <-  
  10.   
  11. redis> SDIFF peter's_movies joe's_movies  
  12. 1"bet man"  
  13. 2"start war"  

 

 


SISMEMBER key member

 

判断member元素是否是集合的成员。

 

时间复杂度:

    O(1)

返回值:

    如果member元素是集合的成员,返回1。

    如果member元素不是集合的成员,或key不存在,返回0。

 

 

Redis代码   收藏代码
  1. redis> SMEMBERS joe's_movies  
  2. 1"hi, lady"  
  3. 2"Fast Five"  
  4. 3"2012"  
  5.   
  6. redis> SISMEMBER joe's_movies "bet man"  
  7. (integer) 0  
  8.   
  9. redis> SISMEMBER joe's_movies "Fast Five"  
  10. (integer) 1  

 

 


SRANDMEMBER key

 

返回集合中的一个随机元素。

 

该操作和SPOP相似,但SPOP将随机元素从集合中移除并返回,而SRANDMEMBER则仅仅返回随机元素,而不对集合进行任何改动。

 

时间复杂度:

    O(1)

返回值:

    被选中的随机元素。 当key不存在或key是空集时,返回nil。

 

 

Redis代码   收藏代码
  1. redis> SMEMBERS joe's_movies  
  2. 1"hi, lady"  
  3. 2"Fast Five"  
  4. 3"2012"  
  5.   
  6. redis> SRANDMEMBER joe's_movies  
  7. "Fast Five"  
  8.   
  9. redis> SMEMBERS joe's_movies    # 集合中的元素不变  
  10. 1"hi, lady"  
  11. 2"Fast Five"  
  12. 3"2012"  
 

 


SDIFFSTORE destination key [key ...]

 

此命令等同于SDIFF,但它将结果保存到destination集合,而不是简单地返回结果集。

 

如果destination集合已经存在,则将其覆盖。

 

复杂度:

    O(N),N是所有给定集合的成员数量之和。

返回值:

    结果集中的元素数量。

 

 

Redis代码   收藏代码
  1. redis> SMEMBERS joe's_movies  
  2. 1"hi, lady"  
  3. 2"Fast Five"  
  4. 3"2012"  
  5.   
  6. redis> SMEMBERS peter's_movies  
  7. 1"bet man"  
  8. 2"start war"  
  9. 3"2012"  
  10.   
  11. redis> SDIFFSTORE joe_diff_peter joe's_movies peter's_movies  
  12. (integer) 2  
  13.   
  14. redis> SMEMBERS joe_diff_peter  
  15. 1"hi, lady"  
  16. 2"Fast Five"  

 

 

 

SMEMBERS key

 

返回集合中的所有成员。

 

时间复杂度:

    O(N),N为集合的基数。

返回值:

    集合中的所有成员。

 

 

Redis代码   收藏代码
  1. redis> SMEMBERS prog_lang  
  2. 1"c"  
  3. 2"ruby"  
  4. 3"python"  

 

 


SREM key member

 

移除集合中的member元素。

 

如果member元素不是集合中的成员,则SREM命令不执行任何操作。

当key不是集合类型,返回一个错误。

时间复杂度:

    O(1)

返回值:

    如果移除元素成功,返回1。

    如果member元素不是集合成员,返回0。

 

 

Redis代码   收藏代码
  1. redis> SMEMBERS prog_lang  
  2. 1"c"  
  3. 2"ruby"  
  4. 3"python"  
  5.   
  6. redis> SREM prog_lang "c"  
  7. (integer) 1  
  8.   
  9. redis> SMEMBERS prog_lang  
  10. 1"ruby"  
  11. 2"python"  
  12.   
  13. redis> SREM prog_lang "scheme"  
  14. (integer) 0  
  15.   
  16. redis> SMEMBERS prog_lang  
  17. 1"ruby"  
  18. 2"python"  
 

你可能感兴趣的:(redis,redis,integer,ruby,bbs,python,c)