溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

數(shù)據(jù)庫(kù)集合相關(guān)命令有哪些

發(fā)布時(shí)間:2021-11-09 15:14:41 來(lái)源:億速云 閱讀:115 作者:iii 欄目:關(guān)系型數(shù)據(jù)庫(kù)

本篇內(nèi)容介紹了“數(shù)據(jù)庫(kù)集合相關(guān)命令有哪些”的有關(guān)知識(shí),在實(shí)際案例的操作過(guò)程中,不少人都會(huì)遇到這樣的困境,接下來(lái)就讓小編帶領(lǐng)大家學(xué)習(xí)一下如何處理這些情況吧!希望大家仔細(xì)閱讀,能夠?qū)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中增加元素

數(shù)據(jù)庫(kù)集合相關(guān)命令有哪些

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ù)

數(shù)據(jù)庫(kù)集合相關(guān)命令有哪些

spop key

作用: 返回并刪除集合中key中1個(gè)隨機(jī)元素
隨機(jī)--體現(xiàn)了無(wú)序性

數(shù)據(jù)庫(kù)集合相關(guān)命令有哪些
(spop會(huì)彈出/刪除key中的元素,可以用這個(gè)來(lái)抽獎(jiǎng),第一名抽出來(lái),第二名,第三名...)

srandmember key

作用: 返回集合key中,隨機(jī)的1個(gè)元素.
數(shù)據(jù)庫(kù)集合相關(guān)命令有哪些
(和spop不同,不會(huì)彈出/刪除key中的元素)

sismember key  value

作用: 判斷value是否在key集合中
是返回1,否返回0

數(shù)據(jù)庫(kù)集合相關(guān)命令有哪些

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ù)
數(shù)據(jù)庫(kù)集合相關(guān)命令有哪些

smove source dest value

作用:把source中的value刪除,并添加到dest集合中

數(shù)據(jù)庫(kù)集合相關(guān)命令有哪些

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
數(shù)據(jù)庫(kù)集合相關(guān)命令有哪些

suion key1 key2.. Keyn

作用: 求出key1 key2 keyn的并集,并返回
數(shù)據(jù)庫(kù)集合相關(guān)命令有哪些

sdiff key1 key2 key3

作用: 求出key1與key2 key3的差集
即key1-key2-key3

數(shù)據(jù)庫(kù)集合相關(guān)命令有哪些


集合的應(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 所示:

數(shù)據(jù)庫(kù)集合相關(guān)命令有哪些
用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)注億速云網(wǎng)站,小編將為大家輸出更多高質(zhì)量的實(shí)用文章!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI