如何實現資料庫中的大資料量在redis中高效率使用

2021-09-29 16:16:59 字數 695 閱讀 1021

redis基於記憶體,查詢速度快

快的原因:

1、完全基於記憶體,絕大部分請求是純粹的記憶體操作,非常快速。資料存在記憶體中,類似於hashmap,hashmap的優勢就是查詢和操作的時間複雜度都是o(1);

2、資料結構簡單,對資料操作也簡單,redis中的資料結構是專門進行設計的;

3、採用單執行緒,避免了不必要的上下文切換和競爭條件,也不存在多程序或者多執行緒導致的切換而消耗 cpu,不用去考慮各種鎖的問題,不存在加鎖釋放鎖操作,沒有因為可能出現死鎖而導致的效能消耗;

4、使用多路i/o復用模型,非阻塞io;

5、使用底層模型不同,它們之間底層實現方式以及與客戶端之間通訊的應用協議不一樣,redis直接自己構建了vm 機制 ,因為一般的系統呼叫系統函式的話,會浪費一定的時間去移動和請求;

但是,鑑於記憶體空間有限,如何高效使用redis呢?

這就要使用到redis的淘汰策略:

volatile-lru -> 根據lru演算法生成的過期時間來刪除。

allkeys-lru -> 根據lru演算法刪除任何key。

volatile-random -> 根據過期設定來隨機刪除key。

allkeys->random -> 無差別隨機刪。

volatile-ttl -> 根據最近過期時間來刪除

noeviction -> 誰也不刪,直接在寫操作時返回錯誤。這也是redis的預設策略

資料庫大資料量去重實現方式

前提 表a 字段 id a1 a2 可以有多個字段,在此為方便只列出3個字段,其中id是主鍵,因此在乙個表中是唯一的 方式一 delete from a where a.id not in select max id from a group by a1,a2 說明 資料量很大時候,執行非常慢。大資...

大資料量的系統的資料庫結構如何設計?

1 把你表中經常查詢的和不常用的分開幾個表,也就是橫向切分 2 把不同型別的分成幾個表,縱向切分 3 常用聯接的建索引 4 伺服器放幾個硬碟,把資料 日誌 索引分盤存放,這樣可以提高io吞吐率 5 用優化器,優化你的查詢 6 考慮冗餘,這樣可以減少連線 7 可以考慮建立統計表,就是實時生成總計表,這...

大資料量的系統的資料庫結構如何設計?

1 把你表中經常查詢的和不常用的分開幾個表,也就是橫向切分 2 把不同型別的分成幾個表,縱向切分 3 常用聯接的建索引 4 伺服器放幾個硬碟,把資料 日誌 索引分盤存放,這樣可以提高io吞吐率 5 用優化器,優化你的查詢 6 考慮冗餘,這樣可以減少連線 7 可以考慮建立統計表,就是實時生成總計表,這...