上一篇文章: Python--Redis實戰:第三章:Redis命令:第二節:列表
下一篇文章: Python--Redis實戰:第三章:Redis命令:第四節:散列
Redis的集合以無序的方式來存儲多個各不相同的元素,用戶能夠快速地對集合執行添加元素操做、移除元素操做、以及檢查一個元素是否存在於集合裏。本節將對最經常使用的集合命令進行介紹,包括:插入命令、移除命令、將元素從一個集合移動到另外一個集合的命令、以及對多個集合執行交集運算、並集運算、差集運算的命令。redis
下表展現了其中一部分最經常使用的集合命令:segmentfault
命令 | 用例 | 用例描述 |
---|---|---|
sadd | sadd key-name item [item ...] | 將一個或多個元素添加到集合裏面,並返回被添加元素當中本來並不存在於集合裏面的元素數量 |
srem | srem key-name item [item ...] | 從集合裏面移除一個或多個元素,並返回被移除元素的數量 |
sismember | sismember key-name item | 檢查元素item是否存在於集合key-name裏 |
scard | scard key-name | 返回集合包含的元素的數量 |
smembers | smembers key-name | 返回集合包含的全部元素 |
srandmember | srandmember key-name [count] | 從集合裏面隨機地返回一個或多個元素。當count爲正數時,命令返回的隨機元素不會重複;當count爲負數時,命令返回的隨機元素可能會出現重複。 |
spop | spop key-name | 隨機地移除集合中的一個元素,並返回被移除的元素。 |
smove | smove source-key dest-key item | 若是集合source-key包含元素item,那麼從集合source-key裏面移除元素item,並將元素item添加到集合dest-key中;若是item被成功移除,那麼命令返回1,不然返回0 |
import redis #導入redis包包 #與本地redis進行連接,地址爲:localhost,端口號爲6379 r=redis.StrictRedis(host='localhost',port=6379) r.delete('set-key') #sadd命令會將那些目前並不存在於集合裏面的元素添加到集合裏面,並返回被添加元素的數量 print(r.sadd('set-key','a','b','c')) #srem命令返回的是被移除元素的數量 print(r.srem('set-key','c','d')) print(r.srem('set-key','c','d')) #查看集合包含的元素數量 print(r.scard('set-key')) #獲取集合包含的全部元素 print(r.smembers('set-key')) #能夠很容易地將元素從一個集合移動到另外一個集合 print(r.smove('set-key','set-key2','a')) #在執行smove命令時,若是用戶想要移動的元素不存在於第一個集合裏,那麼移動操做就不會執行,返回False print(r.smove('set-key','set-key2','a')) print(r.smembers('set-key2'))
運行結果:code
3 1 0 2 {b'a', b'b'} True False {b'a'}
經過使用上面展現的命令,咱們能夠將各不相同的元素添加到集合裏面,但集合真正厲害的地方在於組合和關聯多個集合,下表展現了相關的命令:rem
命令 | 用例 | 用例描述 |
---|---|---|
sdiff | sdiff key-name [key-name ...] | 返回那些存在於第一個集合、但不存在於其它集合中的元素(數學上的差集運算) |
sdiffstore | sdiffstore dest-key key-name [key-name ...] | 將那些存在於第一個集合但不存在於其餘集合中的元素(數學上的差集運算)存儲到dest-key鍵裏面 |
sinter | sinter key-name [key-name ...] | 返回那些同時存在於全部集合中的元素(數學上的交集運算) |
sinterstore | sinterstore dest-key key-name [key-name ...] | 將那些同時存在於全部集合的元素(數學上的交集運算)存儲到dest-key鍵裏面 |
sunion | sunion key-name [key-name ...] | 返回那些至少存在於一個集合中的元素(數學上的並集計算) |
sunionstore | sunionstore dest-key key-name [key-name ...] | 將那些至少存在於一個集合中的元素(數學上的並集計算)存儲到dest-key鍵裏面 |
這些命令分別是並集運算、交集運算和差集運算這3個基本集合操做的」返回結果「版本和」存儲結果「版本。get
示例:數學
import redis #導入redis包包 #與本地redis進行連接,地址爲:localhost,端口號爲6379 r=redis.StrictRedis(host='localhost',port=6379) r.delete('set-key1') r.delete('set-key2') #首先將這一些元素添加到兩個集合裏面 print(r.sadd('set-key1','a','b','c','d')) print(r.sadd('set-key2','c','d','e','f')) #計算出從第一個集合裏面移除第二個集合包含的全部元素的結果 print(r.sdiff('set-key1','set-key2')) #計算出同時存在於兩個集合裏面的全部元素 print(r.sinter('set-key1','set-key2')) #計算出兩個集合包含的全部元素 print(r.sunion('set-key1','set-key2'))
運行結果:it
4 4 {b'b', b'a'} {b'c', b'd'} {b'c', b'e', b'd', b'f', b'a', b'b'}
和Python的集合相比,Redis的集合除了能夠被多個客戶端遠程地進行訪問之外,其餘的語義和功能基本都是相同的。io
接下來的一節將對Redis的散列處理命令進行介紹,這些命令容許用戶將多個相關的鍵值對存儲在一塊兒,以便執行獲取操做和更新操做。table
上一篇文章: Python--Redis實戰:第三章:Redis命令:第二節:列表
下一篇文章: Python--Redis實戰:第三章:Redis命令:第四節:散列