可以想象一下高中學過的集合,一樣。
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 完全可以滿...