序號
名稱鏈結位址
1redis系列(一) redis安裝以及基本型別簡介
2redis系列(二) redis持久化
3redis系列(三) redis主從複製
4redis系列(四) redis哨兵模式與集群
5redis系列(五) redis 快取設計
1.1收益
加速讀寫:因為快取通常都是全記憶體的(例如redis、memcache),而儲存層通常讀寫效能不夠強悍(例如mysql),通過快取的使用可以有效地加速讀寫,優化使用者體驗。
降低後端負載:幫助後端減少訪問量和複雜計算(例如很複雜的sql語句),在很大程度降低了後端的負載。
使用redis帶來的成本
使用場景
2.1 記憶體溢位淘汰策略
當redis所用記憶體達到maxmemory上限(used_memory>maxmemory)時會觸發相應的溢位控制策略。具體策略受maxmemory-policy引數控制。
redis支援6種策略:
1)noeviction:預設策略,不會刪除任何資料,拒絕所有寫入操作並返回客戶端錯誤資訊(error)oom command not allowed when used memory,此時redis只響應讀操作。
2)volatile-lru:根據lru演算法刪除設定了超時屬性(expire)的鍵,直到騰出足夠空間為止。如果沒有可刪除的鍵物件,回退到noeviction策略。
3)volatile-random:隨機刪除過期鍵,直到騰出足夠空間為止。
4)allkeys-lru:根據lru演算法刪除鍵,不管資料有沒有設定超時屬性,直到騰出足夠空間為止。
5)allkeys-random:隨機刪除所有鍵,直到騰出足夠空間為止。
6)volatile-ttl:根據鍵值物件的ttl屬性,刪除最近將要過期資料。如果沒有,回退到noeviction策略
記憶體溢位控制策略可以採用config set maxmemory-policy動態配置。
寫命令導致當記憶體溢位時會頻繁執行**記憶體成本很高,如果redis有從節點,**記憶體操作對應的刪除命令會同步到從節點,導致寫放大的問題。
2.2 過期刪除
2.2.1 惰性刪除
2.2.2 定時刪除
redis內部維護乙個定時任務,預設每秒執行10次。通過hz修改執行次數。定時任務中刪除過期鍵邏輯採用了自適應演算法,根據鍵的過期比例、使用快慢兩種速率模式**鍵。servercron
慢模式:定時任務執行時間超過25毫秒自動退出
快模式:上次執行時間超過25毫秒,則採用快模式,快模式下超時時間為1毫秒且2秒內只能執行1次。
請參考:
Redis系列五 Redis持久化
一 rdb redis database 1 介紹 在指定的時間間隔內將記憶體中的資料集快照寫入磁碟,也就是行話講的snapshot快照,它恢復時是將快照檔案直接讀到記憶體裡。redis會單獨建立 fork 乙個子程序來進行持久化,會先將資料寫入到乙個臨時檔案中,待持久化過程都結束了,再用這個臨時檔...
Redis快取系列 三 redis記憶體管理
redis中,它的key的型別都是string,大小為512m 而value的型別的大小又不太相同 我們在啟動redis服務的時候,可以在它的配置檔案redis.conf中來配置它的最大記憶體閾值和達到閾值的執行策略,配置如下 最大記憶體控制 maxmemory 1gb 達到最大閾值的淘汰策略 下邊...
Redis入門系列(五) Redis的Set型別
可以想象一下高中學過的集合,一樣。set 元素無序,元素不可重複。list 元素有序,元素可重複。set可以進行差集 交集 並集的運算。sadd letters a b 向集合letters中新增元素a b srem letters a 移除集合letters中的元素a smembers lette...