成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Redis集合類型使用說明

開發 前端 Redis
今天我們了解一下Redis中的集合類型,也就是set集合。在Redis中set也是可以保存多個字符串的。那么set集合和list鏈表到底有什么不同呢?下面我們重點介紹一下它們之間的不同。

  今天我們了解一下Redis中的集合類型,也就是set集合。在Redis中set也是可以保存多個字符串的。那么set集合和list鏈表到底有什么不同呢?下面我們重點介紹一下它們之間的不同。

  • set中的元素是不可以重復的,而list是可以保存重復元素的。
  • set中的元素是無序的,而list中的元素是有序的。
  • set中的元素不能通過索引下標獲取元素,而list中的元素則可以通過索引下標獲取元素。
  • 除此之外set還支持更高級的功能,例如多個set取交集、并集、差集、等等。

下面我們介紹一下set中的相關命令。

[[278196]]

命令

一、集合內操作

1.添加元素

  1. sadd key member [member ...] 
Redis集合類型使用說明

sadd命令也是有返回值的,它的返回值就是當前執行sadd命令成功添加元素的個數,因為set中不能保存重復元素,所以在執行:

  1. sadd setkey c d 

命令時,返回的是1,而不是2。因為元素c,已經成功保存到set中,不在繼續保存了,只能將d保存到set中。

2.刪除元素

  1. srem key member [member ...] 
Redis集合類型使用說明

 

srem命令和sadd命令一樣也是有返回值的,返回值就是當前刪除元素的個數。

3.計算元素個數

  1. scard key 
Redis集合類型使用說明

scard命令的時間復雜度為O(1),scard命令不會遍歷set中的所有元素,而是直接使用Redis中的內部變量。

4.判讀元素是否在集合中

  1. sismember key member 
Redis集合類型使用說明

sismember命令也有返回值,如果返回值為1則表示當前元素在當前set中,如果返回0則表示當前元素不在set中。

5.隨機從set中返回指定個數元素

  1. srandmember key [count
Redis集合類型使用說明

srandmember命令中有一個可選參數count,count參數指的是返回元素的個數,如果當前set中的元素個數小于count,則srandmember命令返回當前set中的所有元素,如果count參數等于0,則不返回任何數據,如果count參數小于0,則隨機返回當前count個數的元素,不管當前set中的元素個數為多少。

6.從集合中隨機彈出元素

  1. spop key [count

 Redis集合類型使用說明

spop命令也是隨機從set中彈出元素,并且也支持count可選參數,但有一點和srandmember命令不同。spop命令在隨機彈出元素之后,會將彈出的元素從set中刪除,而srandmember命令則不同,只會隨機彈出元素,并不會將元素從set中刪除。

7.獲取所有元素

  1. smembers key 
Redis集合類型使用說明

smembers命令雖然能獲取當前set中所有的元素,但smembers命令返回元素的順序與sadd添加元素的順序不一定相同,這也就是前面提到過的保存在set中的元素是無序的。

二、集合間操作

1.集合的交集

  1. sinter key [key ...] 
Redis集合類型使用說明

2.集合的并集

  1. sunion key [key ...] 
Redis集合類型使用說明

3.集合的差集

  1. sdiff key [key ...] 
Redis集合類型使用說明

4.將集合的交集、并集、差集的結果保存

  1. sinterstore destination key [key ...] 
  2. sunionstore destination key [key ...] 
  3. sdiffstore destination key [key ...] 

 

Redis集合類型使用說明

為什么Redis要提供了sinterstore、sunionstore、sdiffstore命令來將集合的交集、并集、差集的結果保存起來呢?這是因為Redis在進行上述比較時,會比較耗費時間,所以為了提高性能可以將交集、并集、差集的結果提前保存時來,這樣在需要使用時,可以直接通過smembers命令獲取。

下面我們看一下set中相關命令的時間復雜度。

Redis集合類型使用說明

內部編碼

  • intset(整數集合):當集合中的元素都是整數,并且集合中的元素個數小于512個時,Redis會選用intset作為底層內部實現。
  • hashtable(哈希表):當條件不滿足上述時,Redis會采用hashtable作為底層實現。

備注:我們可以通過set-max-intset-entries參數來設置上述中的默認參數。

下面我們看一下具體的事例,來驗證我們上面提到的內部編碼。

Redis集合類型使用說明

1.當元素個數較少并且都是整數時,內部編碼為intset。

Redis集合類型使用說明

2.當元素不全是整數時,內部編碼為hashtable。

3.當元素個數超過512個時,內部編碼為hashtable。

Redis集合類型使用說明
Redis集合類型使用說明

上述命令就是Redis中的集合相關的知識,如有不正確的地方歡迎指出,謝謝。

責任編輯:華軒 來源: 今日頭條
相關推薦

2013-10-31 10:59:41

Clouda使用

2009-12-28 11:34:22

WPF處理消息

2010-06-03 13:49:04

Sendmail 配置

2011-03-15 10:00:01

NetfilterIPTables

2009-12-15 15:13:07

.NET Framew

2009-12-21 10:10:25

Oracle產品

2010-05-27 14:02:04

SVN使用說明

2010-05-27 14:28:41

TortoiseSVN

2009-12-24 16:20:43

WPF Tooltip

2010-05-07 13:43:27

Unix Shell

2010-07-28 09:49:27

FlexBuilder

2010-05-27 14:38:37

2010-05-27 14:18:00

SVN使用說明

2009-12-25 18:12:43

WPF裝飾器

2009-12-15 10:17:38

VS 2010軟件

2020-06-28 09:03:26

Linuxtree命令目錄

2010-01-05 16:33:35

使用JSON

2009-12-28 11:23:38

WPF資源文件

2009-12-31 14:39:24

ADO測試程序

2010-01-04 16:54:22

ADO分頁
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 精品一区二区三区在线视频 | 一区二区三区在线播放视频 | 国产一区在线免费 | 久久久.com | 欧美 日韩 国产 成人 在线 | 日韩黄色小视频 | 国产伦精品一区二区三区四区视频 | av黄色在线| 国产精品69av | 成人精品一区二区三区中文字幕 | 亚洲在线成人 | 一级在线视频 | 精品国产乱码久久久久久蜜臀 | 北条麻妃99精品青青久久主播 | 久久亚洲国产 | 国产福利资源 | 夜夜爽99久久国产综合精品女不卡 | 久久久久一区二区 | 欧美中文视频 | 亚洲国产精品久久人人爱 | 欧美日韩高清在线观看 | 激情视频网站 | 欧美福利一区 | 精品一区二区三区四区外站 | 国产女人与拘做受视频 | av免费观看在线 | 狠狠涩| www.玖玖玖 | 日韩成人影院在线观看 | 国产精品永久免费 | www.亚洲区| 麻豆久久久久久 | 最新中文字幕一区 | 四虎影院一区二区 | 精品乱人伦一区二区三区 | 国产成人综合久久 | 一区二区精品在线 | 黄色片亚洲 | 中日韩毛片| 99精品在线观看 | 日本粉嫩一区二区三区视频 |