Redis keys:
作為redis的key需要注意一下幾個(gè)原則
1. key可以為null
2.key不能太長(zhǎng)咐容,太長(zhǎng)的話不僅僅消耗內(nèi)存而且還在查詢過(guò)程中會(huì)提高查詢的成本
3 可以不易過(guò)短舆逃,不方便閱讀
Redis String
?String類型不僅僅是字符串類型,還可以是數(shù)值類型的字符串戳粒,比如“”123“”路狮。redis會(huì)解析成為int類型進(jìn)行操作,操作完畢后會(huì)再次保存為String類型蔚约,對(duì)于String的操作是原子操作奄妨,也就意味著當(dāng)并發(fā)操作的時(shí)候,不會(huì)產(chǎn)生臟數(shù)據(jù)苹祟。
?通過(guò)set/get操作設(shè)置
當(dāng)時(shí)數(shù)值型的字符串的時(shí)候可以實(shí)現(xiàn)自增自減
set key 100? ?** key:key value:100
incr key? ?// 101? **指定默認(rèn)自增1
incrby key 50? ?//151? ?**指定自增50
getset? ?key? 34? ***獲取key的值并將key的值設(shè)置為34
mset /mget? ***? 一次設(shè)置多個(gè)key-value砸抛,一次獲取多個(gè) key
exits/del? **判斷是否存在key,刪除key
expire key? 5? **設(shè)置key的存活時(shí)間树枫,一旦到了存活時(shí)間直焙,就會(huì)自動(dòng)刪除
(具體的api在后面的操作上如果不是很重要的話,在操作的時(shí)候直接可以查找api,在這里并不會(huì)過(guò)多的去涉及)
使用場(chǎng)景:根據(jù)其自增特性团赏,在統(tǒng)計(jì)網(wǎng)站的訪客數(shù)量時(shí)可以使用該數(shù)據(jù)類型
Redis Lists
lists數(shù)據(jù)類型頂層是用Linked list鏈表來(lái)實(shí)現(xiàn)的箕般,鏈表存儲(chǔ)數(shù)據(jù)的特點(diǎn)是增刪改速度比較快耐薯,數(shù)據(jù)是有序可重復(fù)舔清。同時(shí)也就意味著,在操作的lists數(shù)據(jù)類型的時(shí)候曲初,可以指定在鏈頭操作也可以在鏈尾操作体谒,
list上提供非阻塞操作,上文中提過(guò)臼婆,redis可以作為隊(duì)列抒痒,當(dāng)時(shí)當(dāng)lredis作為隊(duì)列的時(shí)候,消費(fèi)者要不斷的從redis中獲取數(shù)據(jù)颁褂,當(dāng)redis中數(shù)據(jù)為空的時(shí)候故响,消費(fèi)者還不斷的從redis中獲取數(shù)據(jù)的話傀广,就會(huì)增加其訪問(wèn)壓力,造成cpu空轉(zhuǎn)彩届,所以redis提供了響應(yīng)的api比如:BlPOP/BRPOP 伪冰。該命令后面跟著時(shí)間n,意味著,redis先去查找?guī)熘械脑卣寥洌?dāng)找到的時(shí)候直接返回該元素并刪除元素贮聂,如果沒(méi)有找到的時(shí)候會(huì)阻塞n秒后返回 nil 并結(jié)束查找。
使用場(chǎng)景:比如消息系統(tǒng)中寨辩,作為消息傳遞吓懈,關(guān)注列表中使用該數(shù)據(jù)結(jié)構(gòu),但是如果是不能重復(fù)那么就使用ZSET靡狞。
Redis Hash
hash 底層使用的時(shí)hasMap耻警,一般用于存儲(chǔ)結(jié)構(gòu)化數(shù)據(jù),可以理解為JavaBean,使用該數(shù)據(jù)類型可以減少序列化和反序列化甸怕,需要修改/獲取value的某一個(gè)屬性榕栏,只需要key+filed(hashMap的key)即可。
使用場(chǎng)景:比如存儲(chǔ)用戶的個(gè)人信息
Redis Set
set數(shù)據(jù)類型特點(diǎn)是蕾各,無(wú)序不可重復(fù)扒磁。可以查找并集交集等等式曲,sunionstore:用來(lái)復(fù)制信息妨托,底層使用hashmap來(lái)實(shí)現(xiàn)的,只是改hashmap的value為空吝羞,
使用場(chǎng)景:可以將注冊(cè)的用戶信息放入set中兰伤,或者投票用戶的信息,通過(guò)sismember 來(lái)判斷是否重復(fù)注冊(cè)或者投票钧排。
Redis ZSet
zset數(shù)據(jù)類型敦腔,是有序不可重復(fù)的集合,該排序功能通過(guò)zset集合的每一個(gè)元素和一個(gè)score(double類型)進(jìn)行綁定映射恨溜,從而實(shí)現(xiàn)排序功能
使用場(chǎng)景:網(wǎng)站統(tǒng)計(jì)投票top前10的客戶信息,網(wǎng)站訪問(wèn)的客戶信息符衔,以訪問(wèn)的時(shí)間作為權(quán)重,這樣自動(dòng)排序訪問(wèn)客戶的數(shù)據(jù)糟袁。