一般哪些數(shù)據(jù)需要Redis緩存
1.字符串string:
字符串類型是Redis中最為基礎(chǔ)的數(shù)據(jù)存儲(chǔ)類型,是一個(gè)由字節(jié)組成的序列,他在Redis中是二進(jìn)制安全的,這便意味著該類型可以接受任何格式的數(shù)據(jù),如JPEG圖像數(shù)據(jù)貨Json對(duì)象描述信息等,是標(biāo)準(zhǔn)的key-value,一般來存字符串,整數(shù)和浮點(diǎn)數(shù)。Value最多可以容納的數(shù)據(jù)長度為512MB
應(yīng)用場景:很常見的場景用于統(tǒng)計(jì)網(wǎng)站訪問數(shù)量,當(dāng)前在線人數(shù)等。incr命令(++操作)
2.列表list:
Redis的列表允許用戶從序列的兩端推入或者彈出元素,列表由多個(gè)字符串值組成的有序可重復(fù)的序列,是鏈表結(jié)構(gòu),所以向列表兩端添加元素的時(shí)間復(fù)雜度為0(1),獲取越接近兩端的元素速度就越快。這意味著即使是一個(gè)有幾千萬個(gè)元素的列表,獲取頭部或尾部的10條記錄也是極快的。List中可以包含的***元素?cái)?shù)量是4294967295。
應(yīng)用場景:1.***消息排行榜。2.消息隊(duì)列,以完成多程序之間的消息交換??梢杂胮ush操作將任務(wù)存在list中(生產(chǎn)者),然后線程在用pop操作將任務(wù)取出進(jìn)行執(zhí)行。(消費(fèi)者)
3.散列hash:
Redis中的散列可以看成具有String key和String value的map容器,可以將多個(gè)key-value存儲(chǔ)到一個(gè)key中。每一個(gè)Hash可以存儲(chǔ)4294967295個(gè)鍵值對(duì)。
應(yīng)用場景:例如存儲(chǔ)、讀取、修改用戶屬性(name,age,pwd等)
4.集合set:
Redis的集合是無序不可重復(fù)的,和列表一樣,在執(zhí)行插入和刪除和判斷是否存在某元素時(shí),效率是很高的。集合***的優(yōu)勢(shì)在于可以進(jìn)行交集并集差集操作。Set可包含的***元素?cái)?shù)量是4294967295。
應(yīng)用場景:1.利用交集求共同好友。2.利用唯一性,可以統(tǒng)計(jì)訪問網(wǎng)站的所有獨(dú)立IP。3.好友推薦的時(shí)候根據(jù)tag求交集,大于某個(gè)threshold(臨界值的)就可以推薦。