本篇內(nèi)容介紹了“數(shù)據(jù)庫(kù)集合相關(guān)命令有哪些”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)W有所成!
創(chuàng)新互聯(lián)專注于企業(yè)成都全網(wǎng)營(yíng)銷推廣、網(wǎng)站重做改版、柯坪網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、H5場(chǎng)景定制、商城系統(tǒng)網(wǎng)站開發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、成都外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為柯坪等各大城市提供網(wǎng)站開發(fā)制作服務(wù)。
集合的性質(zhì): 唯一性,無(wú)序性,確定性
無(wú)序性,例:{1,2}=={2,1}
唯一性,每一個(gè)值都是唯一的
例:插入“python”,“golang”,“python",“c”,"java"5個(gè)值,但實(shí)際上,redis返回的數(shù)字4,表示實(shí)際上只插入了4個(gè)值。這是因?yàn)橛袃蓚€(gè)“python”,集合自動(dòng)過(guò)濾了第2個(gè)"python” 。
注: 在string和link的命令中,可以通過(guò)range 來(lái)訪問(wèn)string中的某幾個(gè)字符或某幾個(gè)元素
但,因?yàn)榧系臒o(wú)序性,無(wú)法通過(guò)下標(biāo)或范圍來(lái)訪問(wèn)部分元素.
因此想看元素,要么隨機(jī)先一個(gè),要么全選
sadd key value1 value2
作用: 往集合key中增加元素
sadd命令在遇到數(shù)據(jù)己經(jīng)存在時(shí),會(huì)返回“0”,如果數(shù)據(jù)不存在則把數(shù)據(jù)插入再返回1。所以,這條命令可以通過(guò)返回的數(shù)字來(lái)判斷數(shù)據(jù)是否存在。
srem value1 value2
作用: 刪除集合中集為 value1 value2的元素
返回值: 忽略不存在的元素后,真正刪除掉的元素的個(gè)數(shù)
spop key
作用: 返回并刪除集合中key中1個(gè)隨機(jī)元素
隨機(jī)--體現(xiàn)了無(wú)序性
(spop會(huì)彈出/刪除key中的元素,可以用這個(gè)來(lái)抽獎(jiǎng),第一名抽出來(lái),第二名,第三名...)
srandmember key
作用: 返回集合key中,隨機(jī)的1個(gè)元素.
(和spop不同,不會(huì)彈出/刪除key中的元素)
sismember key value
作用: 判斷value是否在key集合中
是返回1,否返回0
smembers key
作用: 返回集中中所有的元素
注意:
smembers 命令不會(huì)刪除數(shù)據(jù)。但是如果集合里的數(shù)據(jù)量極大,就應(yīng)該慎重使用“獲取所有數(shù)據(jù)",因?yàn)檫@樣會(huì)導(dǎo)致系統(tǒng)的I/o資源瞬間耗盡
scard key
作用: 返回集合中元素的個(gè)數(shù)
smove source dest value
作用:把source中的value刪除,并添加到dest集合中
sinter key1 key2 key3
作用: 求出key1 key2 key3 三個(gè)集合中的交集,并返回
redis 127.0.0.1:6379> sadd s1 0 2 4 6
(integer) 4
redis 127.0.0.1:6379> sadd s2 1 2 3 4
(integer) 4
redis 127.0.0.1:6379> sadd s3 4 8 9 12
(integer) 4
redis 127.0.0.1:6379> sinter s1 s2 s3
1) "4"
redis 127.0.0.1:6379> sinter s3 s1 s2
1)"4"
sinterstore dest key1 key2 key3
作用: 求出key1 key2 key3 三個(gè)集合中的交集,并賦給dest
suion key1 key2.. Keyn
作用: 求出key1 key2 keyn的并集,并返回
sdiff key1 key2 key3
作用: 求出key1與key2 key3的差集
即key1-key2-key3
集合的應(yīng)用:
在工程中,Redis的集合一般有兩種用途:
( I )根據(jù)集合內(nèi)數(shù)據(jù)不重復(fù)的特性實(shí)現(xiàn)去重并記錄信息。
(2 )利用多個(gè)集合計(jì)算交集、并集和差集。
假設(shè),要做一個(gè)學(xué)生選課情況實(shí)時(shí)監(jiān)控系統(tǒng),則需要實(shí)時(shí)知道以下幾個(gè)數(shù)據(jù):
( I )當(dāng)前一共有多少學(xué)生至少選了一門課。
(2 )選了A課沒(méi)有選B 課的學(xué)生有多少。
(3 )既選了A課又選了B課的學(xué)生有多少。
( 4 ) A 、B兩門課至少選了一門的學(xué)生有多少。
使用集合可以輕易實(shí)現(xiàn)這樣的功能。每一門課作為一個(gè)集合,里面的值就是每一個(gè)學(xué)生的
學(xué)號(hào),如圖5 -65 所示:
用python實(shí)現(xiàn):
import redis client = redis.Redis(host="xx.xx.xx.xx’) all_class = ['algorithm’,’computer’,’history’,’circuit_design’,’math'] def all_student(): students = client.sunion(*all_class) return len(students) def in_a_and_in_b(class_a,class_b): students = client.sinter(class_a,class_b) return len(students) def in_a_not_in_b(class_a,class_b): students = client.sdiff(class a , class b) return len(students) def in_a_or_in_b(class_a,class_b): students= client.sunion(classa,classb) return len(students) def in_a_or_in_b(class_a,class_b): students = client.sunion(class_a,class_b) return len(students) //選了至少一門課: all_student() //選了math沒(méi)選computer的: in_a_not_in_b("math","computer") //選了math也選了computer的學(xué)生: in_a_and_in_b("math","computer") //選了math或選了computer的學(xué)生: in_a_or_in_b("math","computer")
“數(shù)據(jù)庫(kù)集合相關(guān)命令有哪些”的內(nèi)容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業(yè)相關(guān)的知識(shí)可以關(guān)注創(chuàng)新互聯(lián)網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!