天天看點

Redis緩存

持久化方案

RDB(redis db)

預設開啟

配置持久化:save 300 10 、dbfilename  dump.rdb (打開 redis.conf 檔案  找到 SNAPSHOTTING 對應内容save 300 10      2 指定本地資料庫檔案名,一般采用預設的 dump.rdb

fork子程序

問題: Copy On Write 子程序就會占有和主程序一樣的記憶體資源,比如說主程序8G記憶體,那麼在備份的時候必須保證有16G的記憶體

手動 持久化

save(目前程序)

bgsave(fork)

AOF(append only file)

在使用aof和rdb方式時,如果redis重新開機,則資料從aof檔案加載

開啟aof方式:appendonly yes;appendfilename appendonly.aof;appendfsync everysec

AOF開啟的話,重新開機redis伺服器從aof中恢複

緩存問題

緩存穿透

查詢資料庫一定沒有的資料,redis肯定沒有,每一次請求都會發到資料庫

将null緩存、布隆過濾器

緩存雪崩

緩存在同一時間大面積失效,叫做緩存雪崩

緩存時間相同的,失效的時間也是相同的-->緩存多個key的時候,把時間錯開

緩存預熱

redis啟動的時候預先緩存一部分資料(預期到很快會通路)

過期政策與記憶體淘汰機制

過期政策

惰性删除 get的時候,發現已經過期了,删除

定時删除(每一個key都加一個定時器)

定期删除(總共就有一個定時器)

記憶體淘汰機制

no-enviction(驅逐):禁止驅逐資料,新寫入操作會報錯

allkeys-lru:從資料集中挑選最近最少使用的資料淘汰

allkeys-random:從資料集中任意選擇資料淘汰

volatile-lru:從已設定過期時間的資料集中挑選最近最少使用的資料淘汰

volatile-random:從已設定過期時間的資料集中任意選擇資料淘汰

volatile-ttl:從已設定過期時間的資料集中挑選将要過期的資料淘汰