redis是開源的記憶體中的資料結構儲存系統,他可以用作資料庫、快取、訊息中介軟體。
雖然作用域在記憶體中,但也提供了儲存到磁碟的選項,以達到持久化的目地,實現方式是快照或者追加命令日誌:
快照:每隔一段時間,將資料同步到磁碟, 即在指定目錄下生成乙個dump.rdb檔案,redis重啟會通重載入dump.rdb檔案恢復資料。
追加命令日誌 aof:採用日誌的形式記錄每個操作,並追加到檔案中,所以能保證資料的完整性和一致性。
兩種方式的比較
快照:1)資料的完整性和一致性不高,因為可能rdb在最後一次備份時宕機了
2)備份過程中占用記憶體
aof: 1)如果記錄的檔案越來越大,資料恢復就會越來越慢
redis模式是關閉aof的方式的,如果需要開啟則需要按照以下步驟操作
步驟操作
說明步驟1
開啟aof
步驟2
指定儲存日誌檔名
步驟3
指定更新條件
always:同步持久化,每次發生資料變化會立刻寫入到磁碟中。效能較差當資料完整性比較好(慢,安全)
everysec:出廠預設推薦,每秒非同步記錄一次(預設值)
no:不同步
步驟4
配置重寫觸發機制
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
當aof檔案大小是上次rewrite後大小的一倍且檔案大於64m時觸發。這裡的64mb可以根據實際情況配置。
重寫時redis 會fork出一條新程序,讀取記憶體中的資料,並重新寫到乙個臨時檔案中。並沒有讀取舊檔案。最後替換舊的aof檔案
redis採用的是單程序單執行緒模型的kv資料庫
memcached採用的是單程序多執行緒的kv資料庫
既然是單執行緒,為什麼redis查詢速度快
多路 i/o 復用模型
多路i/o復用模型是利用select、poll、epoll可以同時監聽多個流的 i/o事件的能力,在空閒的時候,會把當前執行緒阻塞掉,當有乙個或多個流有 i/o事件時,就從阻塞中喚醒,於是程式就會輪詢一遍所有的流,並且只依次處理就緒的流,這種做法避免了大量的無用操作。
"多路"指的是多個連線,"復用"指的是復用同乙個執行緒。採用多路 i/o復用的技術,可以讓單執行緒高效的處理多個連線請求。
快取穿透:是指查詢乙個資料庫一定不存在的資料。正常的使用快取流程大致是,資料查詢先進行快取查詢,如果key不存在或者key已經過期,再對資料庫進行查詢,並把查詢到的物件,放進快取。如果資料庫查詢物件為空,則不放進快取。
快取擊穿:是指乙個key非常熱點,在不停的扛著大併發,大併發集中對這乙個點進行訪問,當這個key在失效的瞬間,持續的大併發就穿破快取,直接請求資料庫,就像在乙個屏障上鑿開了乙個洞。
快取雪崩:是指在某乙個時間段,快取集中過期失效。
redis知識點小結
這兩天和哥們聊天,他說最近在面試中頻頻被問到關於redis的相關問題,不可否認,目前非關係型資料庫的使用很普遍,尤其是redis更是被很多網際網路公司所鍾愛,面試中也成為了肯定會被問到的乙個點。剛好今天有抽出點時間,就對我所認識的redis的簡單的知識點做一些小小的總結。我們在了解乙個新鮮事物 新的...
Redis 框架知識點
redis 1.特點 效能極高 記憶體型資料庫,讀寫速度極快 豐富的資料型別 可以資料持久化 出於效能考慮,不是高可靠 設定過期時間 可以進行資料淘汰 不完整的事務 無法回滾,資料一致性無法保證 2.使用場景 對速度有要求,並可能需要設定過期時間,主要用於資料快取 3.客戶端 服務端 命令 啟動re...
Redis經典知識點
redis是什麼?redis是乙個開源的,使用c語言編寫的,支援網路互動的,可基於記憶體也可持久化的key value儲存系統。什麼是redis持久化?redis有哪幾種持久化方式?優缺點是什麼?使用redis有哪些好處?資料儲存在記憶體中,讀寫速度快 支援的資料型別資源豐富 支援事務,操作都是原子...