1. 程式人生 > >redis中set的主要操作函式

redis中set的主要操作函式

redis set 是string型別物件的無序集合,set不管儲存多少物件,對儲存物件的add,remove和test操作的時間複雜度是O(1)。set最多能包含 232 - 1 個member。

1、增加

語法:sadd key member[member...]

        解釋:對特定key的set增加一個或多個值,返回是增加元素的個數。注意:對同一個member多次add,set中只會保留一份。

  1. [[email protected] ~]# redis-cli   
  2. redis 127.0.0.1:6379> sadd stu zhangsan lisi wangwu #新增  
  3. (integer) 3  
  4. redis 127.0.0.1:6379> smembers stu    #得到set的所有member  
  5. 1) "wangwu"  
  6. 2) "lisi"  
  7. 3) "zhangsan"  
  8. redis 127.0.0.1:6379> sadd stu zhangsan #增加存在的member  
  9. (integer) 0  
  10. redis 127.0.0.1:6379> smembers stu  
  11. 1) "wangwu"  
  12. 2) "lisi"  
  13. 3) "zhangsan"  
  14. redis 127.0.0.1:6379> sadd tech wangwu liming joe  
  15. (integer) 3  
  16. redis 127.0.0.1:6379> sadd tech jim  
  17. (integer) 1  
  18. redis 127.0.0.1:6379> smembers tech  
  19. 1) "jim"  
  20. 2) "liming"  
  21. 3) "wangwu"  
  22. 4) "joe"  

  2、查詢

a)smembers

語法:smembers key

解釋:獲取set中的所有member

  1. redis 127.0.0.1:6379> smembers stu  
  2. 1) "wangwu"  
  3. 2) "lisi"  
  4. 3) "zhangsan"  
  5. redis 127.0.0.1:6379> smembers tech  
  6. 1) "jim"  
  7. 2) "liming"  
  8. 3) "wangwu"  
  9. 4) "joe"  

b)sismember

語法:sismember key member

解釋:判斷值是否是set的member。如果值是set的member返回1,否則,返回0

  1. redis 127.0.0.1:6379> sismember tech jim #jim 是set的member  
  2. (integer) 1  
  3. redis 127.0.0.1:6379> sismember tech jim001 #jim001 不是set的member  
  4. (integer) 0  
c)scard

語法:scard key

解釋:返回set的member個數,如果set不存在,返回0

  1. redis 127.0.0.1:6379> scard tech  # tech 存在  
  2. (integer) 4  
  3. redis 127.0.0.1:6379> scard stud #stud 不存在  
  4. (integer) 0  
  5. redis 127.0.0.1:6379> scard stu  
  6. (integer) 4  
d)srandmember

語法:srandmember key

解釋:從set中返回一個隨機member

  1. redis 127.0.0.1:6379> srandmember stu  
  2. "zhangsan"  
  3. redis 127.0.0.1:6379> srandmember stu  
  4. "zhangsan"  
  5. redis 127.0.0.1:6379> srandmember stu  
  6. "wangwu"  
  7. redis 127.0.0.1:6379> srandmember stu  
  8. "zhangsan01"  

3、刪除

a)spop

語法:spop key

解釋:移除並返回一個隨機member

  1. redis 127.0.0.1:6379> smembers stu #pop前  
  2. 1) "zhangsan01"  
  3. 2) "wangwu"  
  4. 3) "lisi"  
  5. 4) "zhangsan"  
  6. redis 127.0.0.1:6379> spop stu  #移除一個隨機member  
  7. "lisi"  
  8. redis 127.0.0.1:6379> smembers stu #pop後  
  9. 1) "zhangsan01"<span style="white-space:pre;">  </span>  
  10. 2) "wangwu"  
  11. 3) "zhangsan"  
b)srem

語法:srem key member [member ...]

解釋:移除一個或多個member

  1. redis 127.0.0.1:6379> smembers tech  
  2. 1) "jim"  
  3. 2) "liming"  
  4. 3) "wangwu"  
  5. 4) "joe"  
  6. redis 127.0.0.1:6379> srem tech jim   #移除jim  
  7. (integer) 1  
  8. redis 127.0.0.1:6379> smembers tech     
  9. 1) "liming"  
  10. 2) "wangwu"  
  11. 3) "joe"  
  12. redis 127.0.0.1:6379> srem tech liming joe #移除多個member  
  13. (integer) 2  
  14. redis 127.0.0.1:6379> smembers tech  
  15. 1) "wangwu"  
c)smove

語法:smove source destination member

解釋:將source中的member移動到destination

  1. redis 127.0.0.1:6379> smembers tech   #smove前  
  2. 1) "wangwu"  
  3. redis 127.0.0.1:6379> smembers stu  
  4. 1) "zhangsan01"  
  5. 2) "wangwu"  
  6. 3) "zhangsan"  
  7. redis 127.0.0.1:6379> smove stu tech zhangsan  #將zhangsan 從stu移動到tech  
  8. (integer) 1  
  9. redis 127.0.0.1:6379> smembers stu #smove後  
  10. 1) "zhangsan01"  
  11. 2) "wangwu"  
  12. redis 127.0.0.1:6379> smembers tech  
  13. 1) "wangwu"  
  14. 2) "zhangsan"  

4、其他

a)並集

語法:sunion key[key...]

解釋:多個set的並集

  1. redis 127.0.0.1:6379> smembers stu  
  2. 1) "zhangsan01"  
  3. 2) "wangwu"  
  4. redis 127.0.0.1:6379> sunion stu  
  5. 1) "zhangsan01"  
  6. 2) "wangwu"  
  7. redis 127.0.0.1:6379> smembers tech  
  8. 1) "wangwu"  
  9. 2) "zhangsan"  
  10. redis 127.0.0.1:6379> sunion stu tech  
  11. 1) "zhangsan01"  
  12. 2) "wangwu"  
  13. 3) "zhangsan"  

b)把並集結果儲存到set

語法:sunionstore destination key [key ...]

解釋:求多個set並集,並把結果儲存到destination 

  1. redis 127.0.0.1:6379> sunionstore same stu tech #把stu tech並集結果儲存在union  
  2. (integer) 3  
  3. redis 127.0.0.1:6379> smembers union  
  4. 1) "zhangsan01"  
  5. 2) "wangwu"  
  6. 3) "zhangsan"  

 c)交集

語法:sinter key[key...]

解釋:多個set的交集

  1. redis 127.0.0.1:6379> smembers stu  
  2. 1) "zhangsan01"  
  3. 2) "wangwu"  
  4. redis 127.0.0.1:6379> smembers tech  
  5. 1) "wangwu"  
  6. 2) "zhangsan"  
  7. redis 127.0.0.1:6379> sinter stu tech  
  8. 1) "wangwu"  

d)把交集結果儲存到指定set

語法:sinterstore destination key [key ...]

解釋:把多個set的交集結果儲存到destination 

  1. redis 127.0.0.1:6379> sinterstore inter stu tech  
  2. (integer) 1  
  3. redis 127.0.0.1:6379> smembers inter  
  4. 1) "wangwu"  

      e) set中在其他set中不存在member

語法:sdiff key[key ...]

  1. redis 127.0.0.1:6379>   
  2. redis 127.0.0.1:6379> smembers stu  
  3. 1) "zhangsan01"  
  4. 2) "wangwu"  
  5. redis 127.0.0.1:6379> smembers tech  
  6. 1) "wangwu"  
  7. 2) "zhangsan"  
  8. redis 127.0.0.1:6379> sdiff stu tech  
  9. 1) "zhangsan01"  
  10. redis 127.0.0.1:6379> sdiff tech stu  
  11. 1) "zhangsan"  

f)把set中在其他set中不存在的member儲存到新的set

語法:sdiffstore key[key...]

  1. redis 127.0.0.1:6379> sdiffstore diff stu tech  
  2. (integer) 1  
  3. redis 127.0.0.1:6379> smembers diff  
  4. 1) "zhangsan01"  

主要參考:

相關推薦

redis練習手冊set主要操作函式小結

redis set 是string型別物件的無序集合,set不管儲存多少物件,對儲存物件的add,remove和test操作的時間複雜度是O(1)。set最多能包含 232 - 1 個member。 1、增加 語法:sadd key member[member...

redisset主要操作函式

redis set 是string型別物件的無序集合,set不管儲存多少物件,對儲存物件的add,remove和test操作的時間複雜度是O(1)。set最多能包含 232 - 1 個member。1、增加語法:sadd key member[member...]     

Redis系列-儲存篇list主要操作函式小結

在總結list之前,先要弄明白幾個跟list相關的概念: 列表:一個從左到右的佇列,個人理解更類似於一個棧,常規模式下,先進列表的元素,後出。 表頭元素:列表最左端第一個元素。 表尾元素:列表最右端的最後一個元素。不包含任何元素的列表成為空列表。 1)新增 a)lpush

Redis系列-key相關主要操作函式

這篇blog主要總結下,redis中跟key相關的常用函式 1)keys 語法:keys pattern 解釋:查詢所有匹配指定模式pattern的key [[email protected] ~]# redis-cli redis 127.0.0.1:6379

redis練習手冊zset主要操作函式小結

http://blog.csdn.net/love__coder/article/details/8676223 redis支援有序集合,即sorted set。sorted set在set的基礎上,增加了排序屬性,是set的升級版。這裡簡要談談sorted se

redis set 和 hset 有什麼不同,什麼時候使用 hset 什麼時候使用set

原文地址:https://blog.csdn.net/wab719591157/article/details/73379844/ redis 中存資料時,到底什麼時候用  hset 相比於 set 存資料時又有什麼不一樣? set  就是普通的已key-value 方式

Redis的批量操作Pipeline

大多數情況下,我們都會通過請求-相應機制去操作redis。只用這種模式的一般的步驟是,先獲得jedis例項,然後通過jedis的get/put方法與redis互動。由於redis是單執行緒的,下一次請求必須等待上一次請求執行完成後才能繼續執行。然而使用Pipeline模式,客

編寫一個函式 reverse_string(char * string)(遞迴實現) 實現:將引數字串的字元反向排列。 要求:不能使用C函式的字串操作函式

給定字串,程式碼如下: #include <stdio.h> #include <stdlib.h> #include <assert.h> char* reverse_string(char *str) { assert(str !

編寫一個函式 reverse_string(char * string)(遞迴實現),將引數字串的字元反向排列。 要求不能使用C函式的字串操作函式

#include<stdio.h> #include<stdlib.h> int str(char *string) { int n = 0; while (*string) { n++; string++; } return n; } void rever

redis優化頻繁操作redis產生多次連結引發的網路延時

在程式中可能存在頻繁操作redis,每次操作redis都需要產生網路連結,雖然每次操作的返回處理非常快(幾十甚至幾毫米),但是非常多的redis操作在超高的併發請求中,還是有必要優化的,那麼php中如何避免產生多次操作,每次都連結一次redis呢?其實和上篇文章的方法是一

Spark Streaming的基本操作函式例項

該文例項我的碼雲直達車 請了解一些基本資訊: DStream是Spark Streaming提供的基本抽象。它表示連續的資料流,可以是從源接收的輸入資料流,也可以是通過轉換輸入流生成的已處理資料流。在內部,DStream由一系列連續的RDD表示,這是Spar

js陣列常見操作函式

定義: var arr  = [ "liu",1,1.3,[1,2,3],null]; 取長度: arr.length 給元素賦值: arr[0] = 'LIU'; 搜尋指定的值的位置: arr.indexOf("liu");  //0 擷取陣列的一部分:

php的陣列操作函式整理

PHP 中的陣列實際上是一個有序圖。圖是一種把 values 對映到 keys的型別。此型別在很多方面做了優化,因此可以把它當成真正的陣列來使用,或列表(向量),散列表(是圖的一種實現),字典,集合,棧,佇列以及更多可能性。因為可以用另一個 PHP 陣列作為值,也可以很容易地

標準C語言的檔案操作函式的記憶體版

1. 初衷 專案需要,itron作業系統中實裝freetype+harfbuzz的字型引擎,但itron系統中沒有支援檔案系統! 所以只能將依賴庫中的libdatrie和libthai中的檔案操作換成記憶體版。 2. 程式碼 廢話不說,直接上程式碼。 #include

redis的key操作

1set key value  設定key,預設生命週期永久有效 127.0.0.1:6379> set userid 1101 OK 127.0.0.1:6379> set username lihua OK1234 2 get key 127.0.0.1:

redis的流水線操作和事務

流水線(pipeline)redis作為快取使用可以幫助我們提高系統性能,但是redis本身也可以進一步優化,操作redis命令時,通過批量操作命令(例如mget,mset等),但大多數的命令是不支援批量操作的,這時如果一組操作無先後結果上的依賴,可以把這組操作放在流水線裡(

java常見字串操作函式

java中有很多對字串進行操作的常見方法   總結起來方便記憶 獲取字串長度                                           length() 字串查詢                                          

redisset、setex、setnx、getset的用法

SET key value 含義:           將字串值 value 關聯到 key 。           如果 key 已經持有其他值, SET 就覆寫舊值,無視型別。 SETEX key seconds value 含義:            將值 value 關聯到 key ,並將 k

redis數據類型三之set操作命令

redis數據類i型 set集合類型 1、還是看看redis的官方文檔: 如圖示,redis set 是一種不重復的字符串集合,(它和 list 數據類型的差別就是在不重復上),執行 SADD指令可以添加新的元素到一個 set 集合中。也可以對 set 執行一些其他的操作,如

每天一個JS 小demo之個人信息添加。主要知識點:DOM操作的表格操作,節點操作

mov src i++ blog this tex set elements img 以下是簡易效果: <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8">