特點:使用者高併發環境下,訪問資料庫中根本不存在的資料.
影響:由於使用者高併發訪問,則資料庫可能存在宕機的風險.
說明: 由於使用者高併發的訪問. 訪問的資料剛開始有快取,但是由於特殊原有 導致快取失效.(資料』『單個』』)
解決方案:串聯redis伺服器, 並是redis快取失效時間相差幾秒至幾十秒, 保證不再同一時間刪除
說明: 由於高併發的環境下.大量的使用者訪問伺服器. redis中有大量的資料在同一時間超時(刪除).
解決方案:串聯redis伺服器, 並是redis快取失效時間相差幾秒至幾十秒, 保證不再同一時間刪除 (根快取擊穿解決方案類似)
問題說明:
redis中的資料都儲存在記憶體中.如果服務關閉或者宕機則記憶體資源直接丟失.導致快取失效.
持久化原理說明
redis中有自己的持久化策略.redis啟動時根據配置檔案中指定的持久化方式進行持久化操作. redis中預設的持久化的方式為rdb模式.
特點說明:
rdb模式採用定期持久化的方式. 風險:可能丟失資料.
rdb模式記錄的是當前redis的記憶體記錄快照. 只記錄當前狀態. 持久化效率最高的 (快照檔案預設為redis目錄下的dump.rdb)
rdb模式是預設的持久化方式.
持久化命令:
持久化週期:
使用者操作越頻繁,則持久化週期越短.
特點:
aof模式預設是關閉狀態 如果需要則手動開啟.
aof能夠記錄程式的執行過程可以實現資料的實時持久化. aof檔案占用的空間較大.回覆資料的速度較慢.
aof模式開啟之後.rdb模式將不生效.
aof配置:
在redis配置檔案中修改如下 (檔案內容過多, 建議搜尋關鍵字找到此配置)
# 開啟aof模式
# aof更新日誌檔案
持久化週期配置:手動持久化命令:s**e
由主程序完成(可能會阻塞),bgs**e
使用新的程序完成
思路: 如果允許資料少量的丟失,則首選rdb.(快),如果不允許資料丟失則使用aof模式.
小張在雙11前夜誤操作將redis伺服器執行了flushall命令. 問專案經理應該如何解決??
a: 痛批一頓 ,讓其提交離職申請.
b: 批評教育, 讓其深刻反省,並且請主管 捏腳.
c:專案經理快速解決.並且通知全部門注意.
解決方案:
修改aof檔案中的命令.刪除flushall之後重啟redis即可.
修改redis.conf配置檔案 (大約566行), 以下為注釋內容, 預設是注釋掉的
# maxmemory
修改bytes引數即可
# 1k => 1000 bytes
# 1kb => 1024 bytes
# 1m => 1000000 bytes
# 1mb => 1024*1024 bytes
# 1g => 1000000000 bytes
# 1gb => 1024*1024*1024 bytes
redis執行的空間是記憶體.記憶體的資源比較緊缺.所以應該維護redis記憶體資料,將改讓redis保留熱點資料.
lru是least recently used的縮寫,即最近最少使用,是一種常用的頁面置換演算法,選擇最近最久未使用的頁面予以淘汰。該演算法賦予每個頁面乙個訪問字段,用來記錄乙個頁面自上次被訪問以來所經歷的時間 t,當須淘汰乙個頁面時,選擇現有頁面中其 t 值最大的,即最近最少使用的頁面予以淘汰。
維度: 自上一次使用的時間t
最為理想的記憶體置換演算法.
lfu(least frequently used (lfu) page-replacement algorithm)。即最不經常使用頁置換演算法,要求在頁置換時置換引用計數最小的頁,因為經常使用的頁應該有乙個較大的引用次數。但是有些頁在開始時使用次數很多,但以後就不再使用,這類頁將會長時間留在記憶體中,因此可以將引用計數暫存器定時右移一位,形成指數衰減的平均使用次數。
least frequently used (lfu) page-replacement algorithm
即最不經常使用頁置換演算法,要求在頁置換時置換引用計數最小的頁,因為經常使用的頁應該有乙個較大的引用次數。但是有些頁在開始時使用次數很多,但以後就不再使用,這類頁將會長時間留在記憶體中,因此可以將引用計數暫存器定時右移一位,形成指數衰減的平均使用次數。
維度: 引用次數
隨機演算法, 即記憶體不足的時候隨機刪除一些已有的資料
大約在配置檔案597行, 有以下被注釋的內容
# maxmemory-policy noeviction
解除注釋, 把noeviction改為以下配置即可, 預設為noeviction策略
volatile-lru
在設定了超時時間的資料, 採用lru演算法進行刪除.
allkeys-lru
所有資料採用lru演算法
volatile-lfu
在設定了超時時間的資料, 採用lfu演算法進行刪除.
allkeys-lfu
所有資料採用lfu演算法
volatile-random
設定超時時間資料採用隨機演算法
allkeys-random
所有資料採用隨機演算法
volatile-ttl
設定了超時時間的資料 根據ttl規則刪除. 將剩餘時間少的提前刪除
noeviction
記憶體滿了 不做任何操作.報錯返回.
redis常見面試題
為什麼redis單執行緒還是這麼快?1.絕大部分的請求是純粹的記憶體操作 非常快速 2.採用單執行緒,避免了不必要的額競爭條件和上下文切換,單執行緒指的是網路請求模組使用的是乙個執行緒,即乙個執行緒處理了所有網路請求。3.非阻塞i o i o多路復用,這樣提高了redis的吞吐量,多路 指的是多個網...
Redis常見面試題
5.2.1 redis 是什麼?常 的應用場景?redis是乙個快取資料庫,是乙個非關係型資料庫的鍵值儲存資料庫 應用場景 內容快取,主要用於處理大量資料的高訪問負載 日誌系統5.2.2 redis 常 資料型別有哪些?各自有什麼應用場景?string 儲存的資料是普通的鍵值對可用string來進行...
常見面試題(Redis)
redis redis支援的資料型別?string字串 hash 雜湊 list 列表 set 集合 zset sorted set 有序集合 如何解決快取雪崩 我們先說一下什麼是快取雪崩吧 簡單來說就是redis掛掉了,請求全部走資料庫。還有就是 如果快取資料設定的過期時間是相同的,並且redis...