新聞網(wǎng)站個(gè)人可以做嗎軟文寫作范例大全
為什么要使用redis及其使用場(chǎng)景
- 大部分場(chǎng)景是應(yīng)對(duì)高并發(fā)高性能場(chǎng)景才會(huì)使用,就是訪問(wèn)量已經(jīng)超過(guò)mysql所能承受的,需要做緩存,幫助mysql分流?;蛘咭恍?fù)雜查詢,mysql執(zhí)行很慢沒(méi)法優(yōu)化,可以做緩存提速(做緩存)
- 做認(rèn)證服務(wù)的時(shí)候需要存儲(chǔ)用戶的session信息,使用redis數(shù)據(jù)有效性特性來(lái)管理token的有效時(shí)間,還有就是使用redis快(存儲(chǔ)token信息)
- 做一些中間組件使用,比如分布式鎖,redisson有一套比較完善的體系支持分布式鎖,mysql的版本號(hào)使用起來(lái)有缺陷,比如沒(méi)有可重入特性等,還有就是使用redis快(分布式鎖)
redis常用數(shù)據(jù)類型
string 通常用來(lái)存儲(chǔ)單個(gè)健值對(duì)(適合簡(jiǎn)單存儲(chǔ)單個(gè)健值對(duì)情況)
list 通常用來(lái)存儲(chǔ)一組數(shù)據(jù),類似有序隊(duì)列,底層數(shù)據(jù)結(jié)構(gòu)是個(gè)鏈表,讀取時(shí)間復(fù)雜度是O(n)(適合存儲(chǔ)一個(gè)健對(duì)應(yīng)多個(gè)值情況)(LinkedList)
hash 通常用來(lái)存儲(chǔ)多個(gè)健值對(duì)情況,底層存儲(chǔ)數(shù)據(jù)結(jié)構(gòu)是個(gè)hashMap,時(shí)間復(fù)雜度都是O(1)(適合用一個(gè)數(shù)據(jù)結(jié)構(gòu)來(lái)管理多個(gè)健值對(duì)的情況)(HashMap)
set 通常用來(lái)存儲(chǔ)一組數(shù)據(jù),而且去重,并且對(duì)順序沒(méi)要求的,底層數(shù)據(jù)結(jié)構(gòu)是個(gè)hashSet(適合存儲(chǔ)一個(gè)健對(duì)應(yīng)多個(gè)值的情況,并且要求無(wú)序和唯一)(HashSet)
zset 通常用來(lái)存儲(chǔ)一組數(shù)據(jù),但是對(duì)這個(gè)數(shù)據(jù)加了個(gè)排序字段,底層數(shù)據(jù)結(jié)構(gòu)是個(gè)跳表(適合存儲(chǔ)一個(gè)健對(duì)應(yīng)多個(gè)值的情況,并且有排序要求)(TreeSet)
注意:過(guò)期時(shí)間設(shè)置單位是以對(duì)象為單位的, list hash set zset里面數(shù)據(jù)過(guò)期同時(shí)過(guò)期,不可以單獨(dú)設(shè)置過(guò)期時(shí)間,所以想要多個(gè)數(shù)據(jù)是獨(dú)立過(guò)期時(shí)間,那么使用多個(gè)string類型存儲(chǔ)