欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

前言

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

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

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

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

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

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

sadd、smembers、sismember

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

sadd key member [member ...]

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

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

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

smembers key

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

sismember key member

spop、srandmember

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

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

spop key [count]

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

srandmember key [count]

smove、srem

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

smove source destination member

返回值1表示移動(dòng)成功,0表示移動(dòng)失敗

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

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

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

srem key member [member...]

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

sinter、sinterstore

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

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

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

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

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

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

sinter key [key ...]

返回值就是交集的元素

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

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

sinterstore destination key [key ...]

返回值就是交集的元素個(gè)數(shù)
要想知道交集的內(nèi)容的話,我們直接按照訪問集合的方式訪問destination這個(gè)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é)

命令時(shí)間復(fù)雜度
sadd key element [element …]O(k), k 是元素個(gè)數(shù)
srem key element [element …]O(k), k 是元素個(gè)數(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 是元素個(gè)數(shù)
sinter key [key …] sitnerstoreO(m * k), k 是幾個(gè)集合中元素最小的個(gè)數(shù), m 是鍵個(gè)數(shù)
sunion key [key …] sunionstoreO(k), k 是多個(gè)集合的元素個(gè)數(shù)總和
sdiff key [key …] sdiffstoreO(k), k 是多個(gè)集合的元素個(gè)數(shù)總和

內(nèi)部編碼方式

set應(yīng)用場景

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

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

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

總結(jié)

通過本文的學(xué)習(xí),我們?nèi)媪私饬?Redis 的 Set 數(shù)據(jù)類型?;仡櫼幌玛P(guān)鍵知識點(diǎn):

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

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

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

相關(guān)文章

  • Redis 中的熱點(diǎn)鍵和數(shù)據(jù)傾斜示例詳解

    Redis 中的熱點(diǎn)鍵和數(shù)據(jù)傾斜示例詳解

    熱點(diǎn)鍵是指在 Redis 中被頻繁訪問的特定鍵,這些鍵由于其高訪問頻率,可能導(dǎo)致 Redis 服務(wù)器的性能問題,尤其是在高并發(fā)場景下,本文給大家介紹Redis 中的熱點(diǎn)鍵和數(shù)據(jù)傾斜,感興趣的朋友一起看看吧
    2025-03-03
  • SpringBoot整合Mybatis-plus和Redis實(shí)現(xiàn)投票功能

    SpringBoot整合Mybatis-plus和Redis實(shí)現(xiàn)投票功能

    投票功能是一個(gè)非常常見的Web應(yīng)用場景,這篇文章將為大家介紹一下如何將Redis和Mybatis-plus整合到SpringBoot中,實(shí)現(xiàn)投票功能,感興趣的可以了解一下
    2023-05-05
  • RedisTemplate訪問Redis的更好方法

    RedisTemplate訪問Redis的更好方法

    這篇文章主要為大家介紹了RedisTemplate訪問Redis的更好方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • Redis Cluster 集群搭建你會嗎

    Redis Cluster 集群搭建你會嗎

    這篇文章主要介紹了Redis Cluster 集群搭建過程,本文分步驟通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-08-08
  • 利用Redis實(shí)現(xiàn)防止接口重復(fù)提交功能

    利用Redis實(shí)現(xiàn)防止接口重復(fù)提交功能

    大家好,本篇文章主要講的是利用Redis實(shí)現(xiàn)防止接口重復(fù)提交功能,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Redis精確去重計(jì)數(shù)方法(咆哮位圖)

    Redis精確去重計(jì)數(shù)方法(咆哮位圖)

    這篇文章主要給大家介紹了關(guān)于Redis精確去重計(jì)數(shù)方法(咆哮位圖)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-06-06
  • 利用Redis進(jìn)行數(shù)據(jù)緩存的項(xiàng)目實(shí)踐

    利用Redis進(jìn)行數(shù)據(jù)緩存的項(xiàng)目實(shí)踐

    在實(shí)際的業(yè)務(wù)場景中,Redis 一般和其他數(shù)據(jù)庫搭配使用,用來減輕后端數(shù)據(jù)庫的壓力,本文就介紹了利用Redis進(jìn)行數(shù)據(jù)緩存的項(xiàng)目實(shí)踐,具有一定的參考價(jià)值,感興趣的可以了解一下
    2022-06-06
  • Redis實(shí)現(xiàn)短信驗(yàn)證碼登錄的示例代碼

    Redis實(shí)現(xiàn)短信驗(yàn)證碼登錄的示例代碼

    本文主要介紹了基于Redis如何實(shí)現(xiàn)短信驗(yàn)證碼登錄功能,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • 記錄一次并發(fā)情況下的redis導(dǎo)致服務(wù)假死的問題解決

    記錄一次并發(fā)情況下的redis導(dǎo)致服務(wù)假死的問題解決

    由于Redis需要依賴于操作系統(tǒng)環(huán)境,如果系統(tǒng)資源受限,比如過量的進(jìn)程在擠占系統(tǒng)資源、系統(tǒng)死鎖等情況,本文主要介紹了記錄一次并發(fā)情況下的redis導(dǎo)致服務(wù)假死的問題解決,感興趣的可以了解一下
    2023-09-09
  • CentOS 6.5 64位下安裝Redis3.0.2的具體步驟

    CentOS 6.5 64位下安裝Redis3.0.2的具體步驟

    這篇文章主要介紹了CentOS 6.5 64位下安裝Redis3.0.2的具體步驟,非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2018-08-08

最新評論