最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Redis Set 類型常用操作命令之從基礎(chǔ)命令到實戰(zhàn)應(yīng)用

 更新時間:2025年08月25日 10:18:44   作者:Undoom  
本文將深入探討Redis Set類型的常用操作命令,包括添加、刪除、查詢以及強(qiáng)大的交集、并集、差集運算,并結(jié)合實際應(yīng)用場景,展示Set 在開發(fā)中的妙用,感興趣的朋友一起看看吧

前言

在 Redis 的眾多數(shù)據(jù)結(jié)構(gòu)中,Set(集合)是一種非常有特色的類型。它與列表(List)類似,都可以存儲多個字符串元素,但 Set 具有兩個核心特性:元素的無序性元素的唯一性。

  • 無序性意味著 Set 中的元素沒有先后順序,{a, b, c} 和 {c, a, b} 被認(rèn)為是同一個集合。
  • 唯一性確保了每個元素在集合中只會出現(xiàn)一次,這使得 Set 成為實現(xiàn)數(shù)據(jù)去重、統(tǒng)計獨立訪客(UV)等場景的天然選擇。

本文將深入探討 Redis Set 類型的常用操作命令,包括添加、刪除、查詢以及強(qiáng)大的交集、并集、差集運算,并結(jié)合實際應(yīng)用場景,展示 Set 在開發(fā)中的妙用。

1、集合中的元素是無序的
list[1,2,3]和[2,3,1]是兩個不用的list
set[1,2,3]和[2,3,1]是一個集合

2、集合中的元素是不能重復(fù)的(元素都是唯一的)
集合可以用來進(jìn)行去重

和list類似,集合中的每個類型,也都是string類型
可以使用JSON這樣的格式讓string也能存儲

sadd、smembers、sismember

sadd:將一個或者多個元素添加到set中,注意,重復(fù)的元素?zé)o法添加到set中的
這里的個體元素叫做member
時間復(fù)雜度是O(1)

sadd key member [member ...]

返回值就是本次操作成功添加了幾個元素

不能重復(fù)添加一個數(shù)

smembers:獲取一個set中的所有元素,注意,元素之間的順序是無序的

smembers key

sismember:判斷一個元素在不在set中,在的話就返回1,不在的話就返回了0
時間復(fù)雜度O(1)

sismember key member

spop、srandmember

正常的pop是刪除末尾元素的,我們這里是因為是集合中,無序的,所以spop是隨機(jī)刪除的
spop:從set中刪除并返回一個或者多個元素,注意,由于set內(nèi)的元素是無序的,所以取出的元素是隨機(jī)的

這里的count是要刪除幾個元素,不寫的話就是默認(rèn)刪除一個元素,寫的話就是刪除count個元素

spop key [count]

srandmember是從指定的集合中返回一個或者多個元素

srandmember key [count]

smove、srem

smove將一個元素從一個集合中取出并且放到另一個集合中去

smove source destination member

返回值1表示移動成功,0表示移動失敗

將member從source上刪除,然后插入到destination中

如果需要進(jìn)行移動的元素不存在的話會返回0的

srem:將制定的元素從set中刪除

srem key member [member...]

可以刪除一個member,也可以一次刪除多個member
返回值表示刪除元素的元素個數(shù)

sinter、sinterstore

交集(inster)、并集(union)、差集(diff)

交集:最終結(jié)果同時出現(xiàn)在兩個集合中

并集:把多個集合中的數(shù)據(jù)集中放在一起,如果元素有重復(fù),也最終只保留一份

差集:a和b作差集就是找出那些元素在a中存在,在b中不存在的

sinter:獲取給指定的一個集合或者是多個集合的交集

時間復(fù)雜度是O(N* M) N是最小的集合的元素個數(shù),M是最大的集合元素個數(shù)

sinter key [key ...]

返回值就是交集的元素

sinterstore :獲取指定的set的交集的元素并且保存到目標(biāo)的set中

直接將算好的交集,放到destination這個key對應(yīng)的集合中

sinterstore destination key [key ...]

返回值就是交集的元素個數(shù)
要想知道交集的內(nèi)容的話,我們直接按照訪問集合的方式訪問destination這個Key即可

sunion、sunionstore、sdiff、sdiffstore

sunion:獲取指定的set的并集中的元素

sunion key [key...]

返回值是并集的元素

sunionstore:獲取指定元素的并集并且放到destination中

sunionstore destination key [key...]

sdiff:獲取指定set的差集中的元素

sdiff key [key...]

sdiffstore:將指定set的差集中的元素獲取到destination中

sdiffstore destination key [key...]

命令總結(jié)

命令時間復(fù)雜度
sadd key element [element …]O(k), k 是元素個數(shù)
srem key element [element …]O(k), k 是元素個數(shù)
scard keyO(1)
sismember key elementO(1)
srandmember key [count]O(n), n 是 count
spop key [count]O(n), n 是 count
smembers keyO(k), k 是元素個數(shù)
sinter key [key …] sitnerstoreO(m * k), k 是幾個集合中元素最小的個數(shù), m 是鍵個數(shù)
sunion key [key …] sunionstoreO(k), k 是多個集合的元素個數(shù)總和
sdiff key [key …] sdiffstoreO(k), k 是多個集合的元素個數(shù)總和

內(nèi)部編碼方式

set應(yīng)用場景

1、使用set來保存用戶的標(biāo)簽

2、set方便計算交集,很容易得找到兩個用戶之間的公共標(biāo)簽
使用set來計算用戶之間的共同好友

3、使用set統(tǒng)計UV
去重

總結(jié)

通過本文的學(xué)習(xí),我們?nèi)媪私饬?Redis 的 Set 數(shù)據(jù)類型。回顧一下關(guān)鍵知識點:

  • 核心特性:Set 是一個無序且元素唯一的字符串集合。這一特性使其在需要去重和進(jìn)行集合運算的場景中表現(xiàn)出色。
  • 基本操作:我們掌握了 sadd 添加、srem 刪除、smembers 查看所有成員、sismember 判斷成員是否存在等基礎(chǔ)命令,其中大部分操作都具有 O(1) 的高效時間復(fù)雜度。
  • 集合運算:Set 最強(qiáng)大的功能之一是其高效的集合運算能力。通過 sinter (交集)、sunion (并集) 和 sdiff (差集) 命令,我們可以輕松實現(xiàn)復(fù)雜的數(shù)據(jù)分析和關(guān)聯(lián)查詢。
  • 應(yīng)用場景:我們探討了 Set 在實際開發(fā)中的應(yīng)用,例如存儲用戶標(biāo)簽、計算共同好友/興趣、以及利用其唯一性進(jìn)行網(wǎng)站 UV 統(tǒng)計等。這些場景充分發(fā)揮了 Set 的優(yōu)勢。

總而言之,Redis Set 以其簡潔的數(shù)據(jù)模型和強(qiáng)大的運算能力,為處理許多常見業(yè)務(wù)問題提供了高效且優(yōu)雅的解決方案。

到此這篇關(guān)于Redis Set 類型詳解:從基礎(chǔ)命令到實戰(zhàn)應(yīng)用的文章就介紹到這了,更多相關(guān)Redis Set 類型內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 詳解redis集群的三種方式

    詳解redis集群的三種方式

    Redis三種集群方式分別是主從復(fù)制,哨兵模式,Cluster集群,這篇文章主要介紹了redis集群的三種方式,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • 關(guān)于Redis庫存超賣問題的分析

    關(guān)于Redis庫存超賣問題的分析

    在高并發(fā)場景下進(jìn)行優(yōu)惠券秒殺測試時,發(fā)現(xiàn)由于并發(fā)操作導(dǎo)致了超賣問題,即理論上只能賣出100個優(yōu)惠券,實際賣出了102個,分析原因,是因為在高并發(fā)環(huán)境下,多個線程同時操作庫存,導(dǎo)致數(shù)據(jù)不一致,提出了兩種解決方案:悲觀鎖和樂觀鎖
    2024-11-11
  • 詳細(xì)分析Redis集群故障

    詳細(xì)分析Redis集群故障

    這篇文章主要介紹了詳細(xì)分析Redis集群故障的相關(guān)內(nèi)容,具有一定的參考價值,這里分享給大家,供需要的朋友參考。
    2017-10-10
  • Redis哈希Hash鍵值對集合操作(查詢增加修改)

    Redis哈希Hash鍵值對集合操作(查詢增加修改)

    Redis中的Hash數(shù)據(jù)?是一個?鍵值對集合,本文主要介紹了Redis哈希Hash鍵值對集合操作(查詢增加修改),具有一定的參考價值,感興趣的可以了解一下
    2024-01-01
  • Redis主從實現(xiàn)讀寫分離

    Redis主從實現(xiàn)讀寫分離

    這篇文章主要為大家詳細(xì)介紹了Redis主從實現(xiàn)讀寫分離的相關(guān)資料 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-10-10
  • 如何基于Session實現(xiàn)短信登錄功能

    如何基于Session實現(xiàn)短信登錄功能

    對比起Cookie,Session是存儲在服務(wù)器端的會話,相對安全,并且不像Cookie那樣有存儲長度限制,下面這篇文章主要給大家介紹了關(guān)于如何基于Session實現(xiàn)短信登錄功能的相關(guān)資料,需要的朋友可以參考下
    2022-10-10
  • 使用Redis實現(xiàn)JWT令牌主動失效機(jī)制

    使用Redis實現(xiàn)JWT令牌主動失效機(jī)制

    JWT是一種輕量級的身份驗證和授權(quán)機(jī)制,它是一種 JSON 格式的數(shù)據(jù)串,通常用于客戶端和服務(wù)端之間的單點登錄(Single Sign-On, SSO)場景,本文給大家介紹了如何使用Redis來實現(xiàn)JWT令牌主動失效機(jī)制,需要的朋友可以參考下
    2024-08-08
  • 詳解Redis?鍵和字符串常用命令

    詳解Redis?鍵和字符串常用命令

    字符串是?Redis?最基本的數(shù)據(jù)結(jié)構(gòu),它將以一個鍵?和一個值?儲存在?Redis?內(nèi)部,本文重點給大家介紹Redis鍵和字符串常用命令,感興趣的朋友一起看看吧
    2022-02-02
  • k8s部署redis cluster集群的實現(xiàn)

    k8s部署redis cluster集群的實現(xiàn)

    在Kubernetes中部署Redis集群面臨挑戰(zhàn),因為每個Redis實例都依賴于一個配置文件,該文件可以跟蹤其他集群實例及其角色。需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-06-06
  • 基于Redis實現(xiàn)附近商鋪查詢功能

    基于Redis實現(xiàn)附近商鋪查詢功能

    這篇文章主要介紹了基于Redis實現(xiàn)-附近商鋪查詢功能,這個功能將使用到Redis中的GEO這種數(shù)據(jù)結(jié)構(gòu)來實現(xiàn),需要的朋友可以參考下
    2025-05-05

最新評論

炎陵县| 恩平市| 石家庄市| 门头沟区| 广灵县| 凤山县| 凤台县| 北宁市| 宣威市| 龙江县| 扶绥县| 文山县| 武邑县| 大石桥市| 汉川市| 延津县| 丘北县| 安西县| 苏尼特右旗| 濮阳县| 蚌埠市| 金溪县| 南平市| 玉山县| 四川省| 沂水县| 南川市| 富阳市| 象山县| 云龙县| 盐亭县| 灵石县| 荔波县| 东明县| 普兰店市| 海原县| 道孚县| 蚌埠市| 施甸县| 广宗县| 文昌市|