Redis入門系列(五) Redis的Set型別

2021-09-17 02:20:07 字數 1659 閱讀 3525

可以想象一下高中學過的集合,一樣。

set:元素無序,元素不可重複。

list:元素有序,元素可重複。

set可以進行差集、交集、並集的運算。

sadd letters a b //向集合letters中新增元素a、b

srem letters a //移除集合letters中的元素a

smembers letters
//判斷乙個元素是否在集合中,時間複雜度是o(1),所以速度非常快。

sismember letters a //屬於返回1 不屬於返回0

scard letters
srandmember letters
spop letters
差集運算

b與a的差集:表示b中有但是a中沒有的元素的集合

sdiff a b //表示a與b的差集
sdiff支援傳入2個以上引數,如下圖3個集合進行diff運算。

首先 seta 與 setb 進行diff ,得到集合

然後,集合再和setc進行diff,得到集合

交集運算

sinter seta setb (得出集合元素:既屬於seta又屬於setb)
並集運算
sunion seta setb (得出集合元素,屬於seta或者屬於setb)
如果要儲存文章標籤的話,選擇什麼型別的資料結構最合適?

ps:乙個文章標籤有多個。比如一篇文章標籤是:「php、技術隨筆、知識分享」。比如我現在想替換「php」標籤為「php效能優化」。

string型別

id:5 : php、技術隨筆、知識分享。

我如果想替換php標籤為php效能優化。

只能是重新set:

set id:5 php、技術隨筆、知識分享

替換動作:

set id:5 php效能優化、技術隨筆、知識分享

這個很不優雅,pass

hash型別

hash型別儲存了物件中屬性與屬性值的對映關係。

假設hset乙個文章id,屬性包括 文章title、content、tags

hmset id:5 title 文章標題 content 文章內容 tags php、技術隨筆、知識分享

我要改變文章的tags:

hset tags php效能優化、技術隨筆、知識分享

同樣,也是重寫他的tags,不是替換掉某乙個tag。(和string沒啥區別)

不優雅,pass。

list型別

list型別可以儲存文章標籤。

注意:list有2個特性:有序、元素可重複。

但是,儲存文章標籤,內容無序,儲存內容是不可重複的。

可以,但是不優雅,pass。

set型別

使用set型別,就很容易的對某個標籤進行:

增加、刪除、更改。

優雅~

redis系列 五 redis 快取設計

序號 名稱鏈結位址 1redis系列 一 redis安裝以及基本型別簡介 2redis系列 二 redis持久化 3redis系列 三 redis主從複製 4redis系列 四 redis哨兵模式與集群 5redis系列 五 redis 快取設計 1.1收益 加速讀寫 因為快取通常都是全記憶體的 例...

Redis系列五 Redis持久化

一 rdb redis database 1 介紹 在指定的時間間隔內將記憶體中的資料集快照寫入磁碟,也就是行話講的snapshot快照,它恢復時是將快照檔案直接讀到記憶體裡。redis會單獨建立 fork 乙個子程序來進行持久化,會先將資料寫入到乙個臨時檔案中,待持久化過程都結束了,再用這個臨時檔...

Redis 講解系列之 Redis入門

能幹嘛去哪下 redis的核心功能點 win7 版安裝 一般不建議在windows下安裝,因為一般企業的使用或者redis功能發揮最優良的os env 是unix,所以建議使用unix或者linux os,當然如果專案除錯os env是window或者報以接觸學習的目的的話windows 完全可以滿...