這兩天和哥們聊天,他說最近在面試中頻頻被問到關於redis的相關問題,不可否認,目前非關係型資料庫的使用很普遍,尤其是redis更是被很多網際網路公司所鍾愛,面試中也成為了肯定會被問到的乙個點。剛好今天有抽出點時間,就對我所認識的redis的簡單的知識點做一些小小的總結。
我們在了解乙個新鮮事物(新的技能)的時候一般都是從下邊這幾個問題開始的:
1、它是什麼?
2、它有什麼用?
3、我為什麼要用它(它的優點是什麼)?
那麼我們今天就圍繞著這三個開始今天的總結吧。
redis是什麼呢?在解決這個問題之前,我們首先應該先熟悉乙個新的單詞nosql
nosql,泛指非關係型的資料庫,nosql即not-only sql,它可以作為關係型資料庫的良好補充。隨著網際網路web2.0**的興起,非關係型的資料庫現在成了了乙個極其熱門的新領域,非關聯式資料庫產品的發展非常迅速
此處做簡單列舉,不具體說明(個人覺得這些東西了解就行)
redis是用c語言開發的乙個開源的高效能鍵值對(key-value)資料庫。它通過提供多種鍵值資料型別來適應不同場景下的儲存需求,目前為止redis支援的鍵值資料型別如下:
簡單點說redis就是乙個非關係型資料庫(高效能鍵值對資料庫)。
了解了redis是什麼,我們再簡單說說redis有什麼用。
取最新的n個資料(取最新文件、排行榜等)
比較常見的情景就是遊戲中的排行榜,這個一般設定為從redis中獲取的
需要精確設定過期時間的應用
一般**類專案中的秒殺
購物車中物品過期自動取消
計數器應用
redis在記憶體中對數字進行遞增或遞減的操作實現的非常好。集合(set)和有序集合(sorted set)也使得我們在執行這些操作的時候變的非常簡單,redis只是正好提供了這兩種資料結構。比如:微博中的點讚數、檢視數等。
實時性要求高併發讀寫
某些**首頁的資訊,首頁上的資訊可能同意時間被很多人檢視,屬於高併發資料,從redis中讀取。
訊息系統pub/sub
構建佇列列
reids在記憶體儲存引擎領域的一大優點是提供 list 和 set 操作,這使得redis能作為乙個很好的訊息佇列平台來使用
快取 最常用的一種使用redis的情景是會話快取(session cache)。用redis快取會話比其他儲存(如memcached)的優勢在於:redis提供持久化。
我們再來聊聊redis有哪些優缺點,這些決定了我們為什麼選擇使用它。
3.1redis 優勢
對資料高併發讀寫(基於記憶體)
對海海量量資料的高效率儲存和訪問(基於記憶體) 對資料的可擴充套件性和高可用性
垂直擴充套件:提公升硬體
⽔水平擴充套件:集群
3.2redis 缺點
redis(acid處理理⾮非常簡單)無法做到太複雜的關聯式資料庫模型
補充乙個小知識點:
-主從:一主多從,主機可寫,從機備份。類似於mysql的讀寫分離,存在問題是一但主節點down掉, 整個redis不不可用。
-哨兵(2.x):啟用乙個哨兵程式(節點),監控其餘節點的狀態,根據選舉策略略,進行行主從切換。缺點:每個節點的資料依舊是一致的,仍無法實現分布式的資料庫。
-集群(3.x):結合上述兩種模式,多主多從,實現高可用、分布式資料儲存
知識點小結
華為 1.c與c 哪個效能比較好?從語言特性角度上來看,c 是c的超集。在 c c的這部分語言特性中有很多會降低執行效率。乙個例子是dynamic cast,執行乙個dynamic cast要消耗100 300個cpu cycles,因為機器要跳到一段特別的snippet 一小段程式 去檢查type...
知識點小結
一 mysql計算日期 timestampdiff day,t3.payment due date,now 二 字段轉換 case when t1.status in d01 a01 a00 then 三 mybatis在插入資料時,返回id usegeneratedkeys true keypro...
unity知識點小結
1 通過gameobject.find 玩家物體 getcomponent 獲取玩家的player指令碼 2 quaternion.identity就是指quaternion 0,0,0,0 就是每旋轉前的初始角度,是乙個確切的值,而transform.rotation是指本物體的角度,值是不確定的...