Redis 集合處理

?

學習了列表之后,發現了Redis處理字符串的功能強大。

為了適應不同場景的需求,還有一個用的很多的就是集合。

Redis提供的集合支持的類型是字符串。并且集合中的元素值是唯一的,也就是說不能出現重復數據。

而且,集合的實現是通過哈希的方式,在修改集合的時候復雜度都為O(1)。

Redis支持集合的最大數量為2^32 - 1個。

?

1、SADD 命令


用于將一個或多個元素加入到指定的集合中,由于集合不存在重復元素,所以已經存在的成員會被忽略。

如果指定的集合不存在,則該命令會創建該集合,并且把元素加入進去。

如果指定的KEY不是一個集合,則返回一個錯誤說明。

127.0.0.1:6379> SADD KEY MEMBER [member ...]

例如,

127.0.0.1:6379> SET SET A
OK
127.0.0.1:6379> SADD SET 1 2 3 4 5 
(error) WRONGTYPE Operation against a key holding the wrong kind of value
127.0.0.1:6379> SADD SET1 1 2 3 4 5
(integer) 5
127.0.0.1:6379> SMEMBERS SET1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"

2、SCARD 命令


用于返回指定集合中元素的數量。

127.0.0.1:6379> SCARD KEY 

例如,

127.0.0.1:6379> SCARD SET1
(integer) 5

3、SDIFF 命令


用于返回給定集合之間的差集。

一定是前面的集合減去后面的集合,剩余的元素。

127.0.0.1:6379> SDIFF KEY KEY [key ...]

例如,

127.0.0.1:6379> sadd SET 1 2 3 4 5
(integer) 5
127.0.0.1:6379> sadd SET1 1 2 3 
(integer) 3
127.0.0.1:6379> sdiff SET1 SET
(empty list or set)
127.0.0.1:6379> sdiff SET SET
(empty list or set)
127.0.0.1:6379> sdiff SET SET1
1) "4"
2) "5"
127.0.0.1:6379> sadd SET2 1 2 3 4 5 6
(integer) 6
127.0.0.1:6379> sdiff SET SET1 SET2
(empty list or set)
127.0.0.1:6379> sdiff SET2 SET1 SET
1) "6"

4、SDIFFSTORE 命令


用于將給定集合之間的差集存儲在指定的集合中。

如果指定的DESTINATION集合已存在,則里面的元素會被覆蓋。

127.0.0.1:6379> SDIFFSTORE DESTINATION KEY KEY [key ...]

例如,

127.0.0.1:6379> SDIFFSTORE SET2 SET SET1
(integer) 2
127.0.0.1:6379> SMEMBERS SET2
1) "4"
2) "5"
127.0.0.1:6379> SMEMBERS SET1
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SMEMBERS SET
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"

5、SINTER 命令


用于返回給定所有集合的交集。

不存在的集合被視為空集,當給定的集合當中有一個時空集時,結果也為空集。

127.0.0.1:6379> SINTER KEY KEY [key ...]

例如,

127.0.0.1:6379> SMEMBERS SET1
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SMEMBERS SET
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> SINTER SET SET1
1) "1"
2) "2"
3) "3"

6、SINTERSTORE 命令


用于將給定集合之間的交集存儲在指定的集合中。

如果指定的DESTINATION集合已存在,則里面的元素會被覆蓋。

127.0.0.1:6379> SINTERSTORE DESTINATION KEY KEY [key ...]

例如,

127.0.0.1:6379> SINTERSTORE SET2 SET SET1
(integer) 3
127.0.0.1:6379> SMEMBERS SET2
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SMEMBERS SET
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> SMEMBERS SET1
1) "1"
2) "2"
3) "3"

7、SISMEMBER 命令


用于判斷給定的元素是否為指定集合的成員。

如果給定的元素是集合成員,則返回1,如果不是,則返回0。

127.0.0.1:6379> SISMEMBER KEY MEMBER 

例如,

127.0.0.1:6379> SMEMBERS SET
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> sismember SET 0
(integer) 0
127.0.0.1:6379> sismember SET 1
(integer) 1

8、SMEMBERS 命令


用于返回指定集合中所有的成員。不存在的集合被視為空集。

127.0.0.1:6379> SMEMBERS KEY

例如,

127.0.0.1:6379> SMEMBERS SET
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> SMEMBERS SE
(empty list or set)

?

9、SMOVE 命令


用于將指定成員元素從SOURCE集合移動到DESTINATION集合中。

并且,SMOVE是原子性操作。

如果SOURCE集合不存在或者不包含指定的元素,則不執行任何操作,返回0。

如果DESTINATION集合中已經包含了指定元素,SMOVE操作將該元素從SOURCE集合中刪除。

如果SOURCE與DESTINATION不是集合類型是,則返回一個錯誤說明。

127.0.0.1:6379> SMOVE SOURCE DESTINATION MEMBER 

例如,

127.0.0.1:6379> SMEMBERS SET
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> SMEMBERS SET1
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SMOVE SET SET1 4
(integer) 1
127.0.0.1:6379> SMOVE SET SET1 5
(integer) 1
127.0.0.1:6379> SMOVE SET SET1 6
(integer) 0

10、SPOP 命令


用于隨機獲取指定集合中的一個或幾個元素,并且該元素從集合中刪除。

獲取的個數由COUNT指定,當指定的個數超過集合的元素個數時,僅返回剩余元素。

當集合為空時,返回空集。COUNT只能為正數,如果是負數,則返回一個錯誤說明。

127.0.0.1:6379> SPOP KEY [count]

例如,

127.0.0.1:6379> SPOP SET 1
1) "1"
127.0.0.1:6379> SPOP SET 3
1) "2"
2) "3"
127.0.0.1:6379> SPOP SET 3
(empty list or set)
127.0.0.1:6379> SPOP SET -1
(error) ERR index out of range

11、SRANDMEMBER 命令


用于隨機獲取指定集合中的一個或幾個元素但不刪除,并且獲取的個數由COUNT指定。

如果COUNT是正數,且小于集合基數,則返回COUNT個元素的數組,其中元素內容不重復。

如果COUNT是正數,且大于集合基數,則返回整個集合。

如果COUNT是負數,則返回COUNT個元素的數組,數組中的元素可以重復。

當集合為空時,返回空集。

127.0.0.1:6379> SRANDMEMBER SET [count]

例如,

127.0.0.1:6379> SRANDMEMBER SET 4
1) "9"
2) "8"
3) "5"
4) "6"
127.0.0.1:6379> SRANDMEMBER SET 4
1) "9"
2) "2"
3) "8"
4) "6"
127.0.0.1:6379> SRANDMEMBER SET -2
1) "8"
2) "2"
127.0.0.1:6379> SRANDMEMBER SET -2
1) "2"
2) "5"
127.0.0.1:6379> SRANDMEMBER SET -8
1) "10"
2) "3"
3) "3"
4) "10"
5) "1"
6) "6"
7) "8"
8) "10"

12、SREM 命令


用于刪除給定集合中的一個或幾個元素,不存在的元素將被忽略。

當KEY不是一個集合時,則返回一個錯誤說明。

127.0.0.1:6379> SREM KEY MEMBER [member ...]

例如,

127.0.0.1:6379> SMEMBERS SET1) "1"2) "2"3) "3"4) "4"5) "5"6) "6"7) "7"8) "8"9) "9"
10) "10"
127.0.0.1:6379> SREM SET 1 3 5 7 9 11
(integer) 5
127.0.0.1:6379> SMEMBERS SET
1) "2"
2) "4"
3) "6"
4) "8"
5) "10"

13、SUNION 命令


用于返回給定集合的并集。不存在的集合被視為空集。

127.0.0.1:6379> SUNION KEY KEY [key ...]

例如,

127.0.0.1:6379> SUNION SET SET1 SET2
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "8"
8) "10"
127.0.0.1:6379> SMEMBERS SET
1) "2"
2) "4"
3) "6"
4) "8"
5) "10"
127.0.0.1:6379> SMEMBERS SET1
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
127.0.0.1:6379> SMEMBERS SET2
1) "1"
2) "2"
3) "3"

14、SUNIONSTORE 命令


用于將給定的集合的并集存儲在指定的集合DESTINATION中。

如果指定的DESTINATION集合已存在,則里面的元素會被覆蓋。

127.0.0.1:6379> SUNIONSTORE DESTINATION KEY KEY [key ...]

例如,

127.0.0.1:6379> SMEMBERS SET2
1) "1"
2) "2"
3) "3"
127.0.0.1:6379> SUNIONSTORE SET2 SET SET1
(integer) 8
127.0.0.1:6379> SMEMBERS SET2
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "6"
7) "8"
8) "10"
127.0.0.1:6379> 

15、SSCAN 命令


SCAN命令及其相關的SSCAN命令、HSCAN命令和ZSCAN命令都用于增量地迭代一集元素。

SSCAN命令用于迭代集合鍵中的元素。

與SCAN命令類型。

127.0.0.1:6379> sscan SET cursor [MATCH pattern] [COUNT count]

例如,

127.0.0.1:6379> SSCAN SET 0 MATCH *
1) "0"
2) 1) "2"2) "4"3) "6"4) "8"5) "10"
127.0.0.1:6379> SSCAN SET 0 
1) "0"
2) 1) "2"2) "4"3) "6"4) "8"5) "10"

?

轉載于:https://www.cnblogs.com/randyma/p/6872486.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/281968.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/281968.shtml
英文地址,請注明出處:http://en.pswp.cn/news/281968.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

fpga mysql_FPGA的一些瑣碎知識整理

1.生產FPGA的廠家有:ALTERAXILINXATCELLatticeps:Altera和Xilinx主要生產一般用途FPGA,其主要產品采用SRAM工藝Actel主要提供非易失性FPGA,產品主要基于反熔絲工藝和FLASH工藝ps: 熔絲,顧名思義:把絲熔掉,反…

使用增量備份修復DG中的GAP

問題描述 oracle中DG出現主備不同步現象,alert日志報警有gap信息,但是v$archive_gap視圖查不到任何信息。同時主庫上的對應歸檔已經刪除且沒有備份 解決方案 1.查詢備庫的scn SQL> select current_scn from v$database; 這時有可能出來的scn是以科學計…

C# 反射類Assembly用法舉例

概述程序運行時,通過反射可以得到其它程序集或者自己程序集代碼的各種信息,包括類、函數、變量等來實例化它們,執行它們,操作它們,實際上就是獲取程序在內存中的映像,然后基于這個映像進行各種操作。Assemb…

團隊作業

團隊&組員: 沒有組名,大概是因為我們組雖然有10個人,但是好像只起到人多的地方就容易開車搞笑,沒有內涵,取出來的都是秋名山吳彥組這樣的開車組名,在大家的的強烈建議和玩笑中,決定了沒有組…

算法系列【希爾排序】篇

常見的內部排序算法有:插入排序、希爾排序、選擇排序、冒泡排序、歸并排序、快速排序、堆排序、基數排序等。用一張圖概括:關于時間復雜度:1. 平方階 (O(n2)) 排序各類簡單排序:直接插入、直接選擇和冒泡排序。2. 線性對數…

sql查詢索引語句_sql優化總結--基于sql語句優化和索引優化

概述最近做查詢,統計和匯總。由于數據量比較龐大,大部分表數據上百萬,甚至有的表數據上千萬。所以在系統中做sql優化比較多,特此寫一篇文章總結一下關于sql優化方面的經驗。導致查詢緩慢的原因1、數據量過大2、表設計不合理3、sql…

電商行業運維實踐

電商行業運維實踐--------------------…

數據結構小總結(成都磨子橋技工學校數據結構前12題)

[pixiv] https://www.pixiv.net/member_illust.php?modemedium&illust_id34352147 暑假的作業,頹頹的我總算是寫完了 線段樹 線段樹是一個高級玩意,不僅可以求區間和,區間最大等等的簡單問題,靈活運用還有好多變種。自從學…

【九章算法免費講座第一期】轉專業找CS工作的“打狗棒法”

講座時間: 美西時間6月5日18:30-20:00(周五) 北京時間6月6日09:30-11:00(周六a.m) 講座安排: 免費在線直播講座 報名網址: http://t.cn/R2XgMSH&a…

golang mysql 防注入_Go,Gorm 和 Mysql 是如何防止 SQL 注入的

Go,Gorm 和 Mysql 是如何防止 SQL 注入的SQL 注入和 SQL 預編譯技術什么是 SQL 注入所謂SQL注入(sql inject),就是通過把SQL命令插入到Web表單提交或輸入域名或頁面請求的查詢字符串,最終達到欺騙服務器執行惡意的SQL命令。具體來說&#xff…

wav2midi 音樂旋律提取算法 附可執行demo

前面提及過,音頻指紋算法的思路。 也梳理開源了兩個比較經典的算法。 https://github.com/cpuimage/shazam https://github.com/cpuimage/AudioFingerprinter 后來一段時間,稍微看了下這兩個算法,還有不少可以精簡優化的空間。 例如抗噪&…

全新升級的AOP框架Dora.Interception[5]: 實現任意的攔截器注冊方式

Dora.Interception提供了兩種攔截器注冊方式,一種是利用標注在目標類型、屬性和方法上的InterceptorAttribute特性,另一種采用基于目標方法或者屬性的調用表達式。通過提供的擴展點,我們可以任何我們希望的攔截器注冊方式。目錄一、IIntercep…

SCAU 算法課的題

8594 有重復元素的排列問題(優先做) 時間限制:1000MS 內存限制:1000K提交次數:1610 通過次數:656 題型: 編程題 語言: G;GCC;VC Description 設集合R{r1,r2,...,rn}是要進行排列的n個元素,其中r1,r2,...,rn可能相同。 試著設計一個算法&am…

react 數組新增_React 新特性 Hooks 講解及實例(二)

本文是 React 新特性系列的第二篇,第一篇請點擊這里:React 新特性講解及實例什么是 HooksHook 是 React 16.8 的新增特性。它可以讓你在不編寫 類組件 的情況下使用 state以及其他的 React 特性。類組件的不足狀態邏輯復用難缺少復用機制渲染屬性和高階組…

智課雅思詞匯---二十二、-al即是名詞性后綴又是形容詞后綴

智課雅思詞匯---二十二、-al即是名詞性后綴又是形容詞后綴 一、總結 一句話總結: 后綴:-al ②[名詞后綴] 1、構成抽象名詞,表示行為、狀況、事情 refusal 拒絕 proposal 提議 withdrawal 撤退 1、名詞性后綴acy是什么意思? 后綴&a…

javascript事件處理程序

javascript 事件處理程序 1、普通事件處理程序 <input type"button" value"click me" οnclick"showMessage()" /> function showMessage(){alert("clicked");} 2、DOMO 級事件處理程序 <span style"white-space:pre&…

eclipse新發現功能之dos和terminal(ssh連接)

dos功能&#xff1a; window——》show view——》other——》remote systems&#xff0c;選擇remote shell&#xff0c;選擇確定或者雙擊&#xff0c;打開了一個新工具窗口。點擊remote shell窗口最右上角的小三角&#xff0c;在launch子菜單中選擇local&#xff0c;點擊即可。…

7天學會python_7天學會Python最佳可視化工具Seaborn(五):結構化展示多維數據

當探索具有中等數量(不多不少的意思……)維度的數據集時&#xff0c;一個很好的方式是基于不同的子數據集構建不同的實例&#xff0c;并將它們以網格的方式組織在一張圖之中。這種技術有時被稱為“lattice”或“trellis”(大概是格子圖、網格圖)&#xff0c;這跟“small multip…

面對峰值響應沖擊,解決高并發的三大策略

2019獨角獸企業重金招聘Python工程師標準>>> 當前在互聯網的大潮下&#xff0c;眾所周知淘寶、京東這些交易系統每天產生的數據量都是海量的&#xff0c;每天的交易并發也是驚人的&#xff0c;尤其是“雙11”、“6.18”這些活動&#xff0c;對系統的峰值響應提出了非…

.NET 采用 SkiaSharp 生成二維碼和圖形驗證碼及圖片進行指定區域截取方法實現

在最新版的 .NET 平臺中&#xff0c;微軟在逐步放棄 System.Drawing.Imaging &#xff0c;給出的理由如下&#xff1a;System.Drawing命名空間對某些操作系統和應用程序類型有一些限制。在Windows&#xff0c; System.Drawing 依賴于GDI操作系統附帶的本機庫。 某些Windows SKU…