持久化
rdb:內(nèi)存數(shù)據(jù)快照探膊,覆蓋磁盤中舊的快照數(shù)據(jù) 快照期間如果有新的數(shù)據(jù)寫入不會(huì)在此次快照過程中保留 占用內(nèi)存小
aof:每次變更操作時(shí)將操作語句通過write函數(shù)寫入文件中聚凹,追加到磁盤中 優(yōu)勢:數(shù)據(jù)不丟失 缺點(diǎn)占用內(nèi)心大
支持?jǐn)?shù)據(jù)類型和數(shù)據(jù)結(jié)構(gòu)
String:
List:雙向鏈表結(jié)構(gòu)
hash:
Set:
ZSet:
緩存穿透蔫劣、緩存擊穿胞四、緩存雪崩的概念以及處理辦法
緩存穿透:數(shù)據(jù)庫和緩存中均不存在盔腔,每次訪問都會(huì)去訪問數(shù)據(jù)庫壕曼。
解決方案:1.對空值做緩存昼扛,設(shè)置過期時(shí)間寸齐;2.使用布隆過濾器 (布隆過濾器會(huì)判斷數(shù)據(jù)庫中是否存在該數(shù)據(jù),不存儲(chǔ)具體值抄谐,而是根據(jù)hash算法最終記錄是否存在渺鹦,用位記錄,占用空間極杏己)
緩存擊穿:過期時(shí)間失效
解決方案:1.不設(shè)置過期時(shí)間毅厚;2.加互斥鎖,即使一時(shí)失效也不會(huì)出現(xiàn)同時(shí)大量訪問數(shù)據(jù)庫的情況浦箱;
緩存雪崩:
同一時(shí)間點(diǎn)吸耿,過期時(shí)間都失效了
解決方案:1.分開設(shè)置過期時(shí)間;2.熱點(diǎn)數(shù)據(jù)不設(shè)置過期時(shí)間酷窥;
redis數(shù)據(jù)統(tǒng)計(jì)
PV:page view 單頁訪問量咽安。 給每個(gè)網(wǎng)頁一個(gè)獨(dú)立的 Redis 計(jì)數(shù)器就可以了,來一個(gè)請求蓬推,incrby 一次妆棒,最終就可以統(tǒng)計(jì)出所有的 PV 數(shù)據(jù);
UV:unique view 自然人訪問量沸伏。
1.使用Set集合統(tǒng)計(jì)糕珊,集合有去重功能,在每個(gè)頁面設(shè)置一個(gè)集合毅糟,將來訪問的用戶ID存儲(chǔ)其中红选,然后統(tǒng)計(jì)數(shù)量。缺點(diǎn)占用內(nèi)存較大留特。
2.使用bitmap位圖功能纠脾。
#設(shè)置指定位置的位值
setbit key offset value setbit 2021-01-01 32 1 offset可以當(dāng)做用戶的自增ID
#或者指定位置的位值
getbit key offset getbit 2021-01-01 獲取用戶在2021-01-01這天的登錄狀態(tài)
#獲取指定范圍內(nèi)key為1的數(shù)量
bitcount key start end bitcount 2021-01-01 12 100 2021-01-01這天用戶ID在12到100范圍內(nèi)多少個(gè)用戶登錄過
3.HyperLogLog基數(shù)統(tǒng)計(jì),特點(diǎn)是占用內(nèi)存小,有一定的錯(cuò)誤率
127.0.0.1:6379> PFadd 2022-02-02 a b c d e f g h i j
(integer) 1
127.0.0.1:6379> PFadd 2022-02-02 h i j 重復(fù)數(shù)據(jù)返回0
(integer) 0
127.0.0.1:6379> PFcount 2022-02-02
(integer) 10 統(tǒng)計(jì)出2022-02-02這天有多少用戶訪問
127.0.0.1:6379> PFadd mykey2 i j z x c v b n m
(integer) 1
127.0.0.1:6379> PFCOUNT mykey2
(integer) 9
127.0.0.1:6379> PFMERGE mykey3 mykey mykey2
OK
127.0.0.1:6379> PFCOUNT mykey3
(integer) 15
127.0.0.1:6379>
緩存淘汰策略和過期刪除策略(定期刪除和惰性刪除)
內(nèi)存不足的淘汰策略:
1.直接報(bào)錯(cuò)蜕青;
2.加入鍵時(shí)苟蹈,如果過限,首先通過LRU算法驅(qū)逐最久沒有使用的鍵右核;
#設(shè)置過過期
3.加入鍵時(shí)慧脱,如果過限,首先從設(shè)置了過期時(shí)間的鍵集合中驅(qū)逐最久沒有使用的鍵贺喝;
#已經(jīng)過期
4.加入鍵時(shí)菱鸥,如果過限,從所有key隨機(jī)刪除躏鱼;
5.加入鍵時(shí)氮采,如果過限,從過期鍵的集合中隨機(jī)刪除染苛;
#馬上過期
6.從配置了過期時(shí)間的鍵中驅(qū)逐馬上就要過期的鍵鹊漠;
7.從所有配置了過期時(shí)間的鍵中驅(qū)逐使用頻率最少的鍵;
8.從所有鍵中驅(qū)逐使用頻率最少的鍵茶行;
Redis數(shù)據(jù)存儲(chǔ)在內(nèi)存中躯概,做緩存能提供訪問速度,單線程確保線程安全畔师,可以當(dāng)做分布式鎖娶靡,支持事務(wù),可以做消息隊(duì)列看锉,發(fā)布-訂閱模式姿锭。支持Master-Slave模式,集群哨兵模式伯铣。