Python--Redis實戰:第三章:Redis命令:第三節:集合

上一篇文章: 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

Redis經常使用集合命令使用實例

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命令:第四節:散列
相關文章
相關標籤/搜索