摘要:上一篇文章實(shí)戰(zhàn)第三章命令第二節(jié)列表下一篇文章實(shí)戰(zhàn)第三章命令第四節(jié)散列
上一篇文章:Python--Redis實(shí)戰(zhàn):第三章:Redis命令:第二節(jié):列表
下一篇文章:Python--Redis實(shí)戰(zhàn):第三章:Redis命令:第四節(jié):散列
Redis的集合以無序的方式來存儲多個(gè)各不相同的元素,用戶可以快速地對集合執(zhí)行添加元素操作、移除元素操作、以及檢查一個(gè)元素是否存在于集合里。本節(jié)將對最常用的集合命令進(jìn)行介紹,包括:插入命令、移除命令、將元素從一個(gè)集合移動到另一個(gè)集合的命令、以及對多個(gè)集合執(zhí)行交集運(yùn)算、并集運(yùn)算、差集運(yùn)算的命令。
下表展示了其中一部分最常用的集合命令:
命令 | 用例 | 用例描述 |
---|---|---|
sadd | sadd key-name item [item ...] | 將一個(gè)或多個(gè)元素添加到集合里面,并返回被添加元素當(dāng)中原本并不存在于集合里面的元素?cái)?shù)量 |
srem | srem key-name item [item ...] | 從集合里面移除一個(gè)或多個(gè)元素,并返回被移除元素的數(shù)量 |
sismember | sismember key-name item | 檢查元素item是否存在于集合key-name里 |
scard | scard key-name | 返回集合包含的元素的數(shù)量 |
smembers | smembers key-name | 返回集合包含的所有元素 |
srandmember | srandmember key-name [count] | 從集合里面隨機(jī)地返回一個(gè)或多個(gè)元素。當(dāng)count為正數(shù)時(shí),命令返回的隨機(jī)元素不會重復(fù);當(dāng)count為負(fù)數(shù)時(shí),命令返回的隨機(jī)元素可能會出現(xiàn)重復(fù)。 |
spop | spop key-name | 隨機(jī)地移除集合中的一個(gè)元素,并返回被移除的元素。 |
smove | smove source-key dest-key item | 如果集合source-key包含元素item,那么從集合source-key里面移除元素item,并將元素item添加到集合dest-key中;如果item被成功移除,那么命令返回1,否則返回0 |
import redis #導(dǎo)入redis包包 #與本地redis進(jìn)行鏈接,地址為:localhost,端口號為6379 r=redis.StrictRedis(host="localhost",port=6379) r.delete("set-key") #sadd命令會將那些目前并不存在于集合里面的元素添加到集合里面,并返回被添加元素的數(shù)量 print(r.sadd("set-key","a","b","c")) #srem命令返回的是被移除元素的數(shù)量 print(r.srem("set-key","c","d")) print(r.srem("set-key","c","d")) #查看集合包含的元素?cái)?shù)量 print(r.scard("set-key")) #獲取集合包含的所有元素 print(r.smembers("set-key")) #可以很容易地將元素從一個(gè)集合移動到另一個(gè)集合 print(r.smove("set-key","set-key2","a")) #在執(zhí)行smove命令時(shí),如果用戶想要移動的元素不存在于第一個(gè)集合里,那么移動操作就不會執(zhí)行,返回False print(r.smove("set-key","set-key2","a")) print(r.smembers("set-key2"))
運(yùn)行結(jié)果:
3 1 0 2 {b"a", b"b"} True False {b"a"}
通過使用上面展示的命令,我們可以將各不相同的元素添加到集合里面,但集合真正厲害的地方在于組合和關(guān)聯(lián)多個(gè)集合,下表展示了相關(guān)的命令:
命令 | 用例 | 用例描述 |
---|---|---|
sdiff | sdiff key-name [key-name ...] | 返回那些存在于第一個(gè)集合、但不存在于其它集合中的元素(數(shù)學(xué)上的差集運(yùn)算) |
sdiffstore | sdiffstore dest-key key-name [key-name ...] | 將那些存在于第一個(gè)集合但不存在于其他集合中的元素(數(shù)學(xué)上的差集運(yùn)算)存儲到dest-key鍵里面 |
sinter | sinter key-name [key-name ...] | 返回那些同時(shí)存在于所有集合中的元素(數(shù)學(xué)上的交集運(yùn)算) |
sinterstore | sinterstore dest-key key-name [key-name ...] | 將那些同時(shí)存在于所有集合的元素(數(shù)學(xué)上的交集運(yùn)算)存儲到dest-key鍵里面 |
sunion | sunion key-name [key-name ...] | 返回那些至少存在于一個(gè)集合中的元素(數(shù)學(xué)上的并集計(jì)算) |
sunionstore | sunionstore dest-key key-name [key-name ...] | 將那些至少存在于一個(gè)集合中的元素(數(shù)學(xué)上的并集計(jì)算)存儲到dest-key鍵里面 |
這些命令分別是并集運(yùn)算、交集運(yùn)算和差集運(yùn)算這3個(gè)基本集合操作的”返回結(jié)果“版本和”存儲結(jié)果“版本。
示例:
import redis #導(dǎo)入redis包包 #與本地redis進(jìn)行鏈接,地址為:localhost,端口號為6379 r=redis.StrictRedis(host="localhost",port=6379) r.delete("set-key1") r.delete("set-key2") #首先將這一些元素添加到兩個(gè)集合里面 print(r.sadd("set-key1","a","b","c","d")) print(r.sadd("set-key2","c","d","e","f")) #計(jì)算出從第一個(gè)集合里面移除第二個(gè)集合包含的所有元素的結(jié)果 print(r.sdiff("set-key1","set-key2")) #計(jì)算出同時(shí)存在于兩個(gè)集合里面的所有元素 print(r.sinter("set-key1","set-key2")) #計(jì)算出兩個(gè)集合包含的所有元素 print(r.sunion("set-key1","set-key2"))
運(yùn)行結(jié)果:
4 4 {b"b", b"a"} {b"c", b"d"} {b"c", b"e", b"d", b"f", b"a", b"b"}
和Python的集合相比,Redis的集合除了可以被多個(gè)客戶端遠(yuǎn)程地進(jìn)行訪問以外,其他的語義和功能基本都是相同的。
接下來的一節(jié)將對Redis的散列處理命令進(jìn)行介紹,這些命令允許用戶將多個(gè)相關(guān)的鍵值對存儲在一起,以便執(zhí)行獲取操作和更新操作。
上一篇文章:Python--Redis實(shí)戰(zhàn):第三章:Redis命令:第二節(jié):列表
下一篇文章:Python--Redis實(shí)戰(zhàn):第三章:Redis命令:第四節(jié):散列
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://m.specialneedsforspecialkids.com/yun/44875.html
摘要:為了防止用戶對同一篇文章進(jìn)行多次投票,網(wǎng)站需要為每一篇文章記錄一個(gè)已投票用戶名單。上一篇文章實(shí)戰(zhàn)第一章初識第二節(jié)數(shù)據(jù)結(jié)構(gòu)簡介下一篇文章實(shí)戰(zhàn)第二章使用構(gòu)建應(yīng)用第一節(jié)登錄和緩存 上一篇文章: Python--Redis實(shí)戰(zhàn):第一章:初識Redis:第二節(jié):Redis數(shù)據(jù)結(jié)構(gòu)簡介下一篇文章:Python--Redis實(shí)戰(zhàn):第二章:使用Redis構(gòu)建Web應(yīng)用:第一節(jié):登錄和cookie緩存 ...
摘要:實(shí)例導(dǎo)入包包與本地進(jìn)行鏈接,地址為,端口號為和字符串一樣,對散列中一個(gè)尚未存在的鍵執(zhí)行自增操作時(shí),會將鍵的值當(dāng)作來處理。 上一篇文章:Python--Redis實(shí)戰(zhàn):第三章:Redis命令:第三節(jié):集合下一篇文章:Python--Redis實(shí)戰(zhàn):第三章:Redis命令:第五節(jié):有序集合 第一章提到過,Redis的散列可以讓用戶將多個(gè)鍵值對存儲到一個(gè)Redis里面。從功能上來說,Red...
閱讀 1902·2021-11-23 09:51
閱讀 1546·2021-11-19 09:40
閱讀 3219·2021-11-11 11:01
閱讀 1118·2021-09-27 13:34
閱讀 1848·2021-09-22 15:56
閱讀 2133·2019-08-30 15:52
閱讀 1070·2019-08-30 14:13
閱讀 3483·2019-08-30 14:10