redis是乙個使用 c 語言編寫的,開源的高效能非關係型(nosql)的鍵值對資料庫。redis 可以儲存鍵和五種不同型別的值之間的對映。鍵的型別只能為字串,值支援五種資料型別:字串、列表、集合、雜湊表、有序集合。 優點
1、速度快
redis能讀的速度是110000次/s,寫的速度是81000次/s 。2、支援資料持久化(aof和rdb兩種持久化方式)為什麼速度快?
答:主要是因為資料儲存在記憶體
因為我們知道redis是把資料是儲存在記憶體裡的,但是記憶體並不支援資料的持久化。例如機器斷電時,記憶體裡的資料會丟失且無法恢復。3、支援多種資料結構redis怎麼支援資料持久化?
答:redis把資料是儲存在記憶體裡,並對資料的更新非同步地儲存到磁碟上。(磁碟是支援資料持久化的)例如機器斷電時,我們可以將資料恢復。
redis是基於key-value進行儲存的,而對比很多基於key-value進行儲存的sql資料庫,4、支援事務redis不同的是它提供五種主要資料結構,包括字串、雜湊、列表、集合、有序集合。
新的版本中redis還支援一些衍生的資料結構,例如bitmaps、hyperloglog、geo等。
redis的所有操作都是原子性的,同時redis還支援對幾個操作合併後的原子性執行。5、支援主從複製
主機會自動將資料同步到從機,可以進行讀寫分離。6、支援高可用、分布式 缺點
資料庫容量受到物理記憶體的限制,不能用作海量資料的高效能讀寫,因此redis適合的場景主要侷限在較小資料量的高效能操作和運算上。
redis 不具備自動容錯和恢復功能,主機從機的宕機都會導致前端部分讀寫請求失敗,需要等待機器重啟或者手動切換前端的ip才能恢復。
主機宕機,宕機前有部分資料未能及時同步到從機,切換ip後還會引入資料不一致的問題,降低了系統的可用性。
完全基於記憶體,絕大部分請求是純粹的記憶體操作,非常快速。
資料結構簡單,對資料操作也簡單,redis 中的資料結構是專門進行設計的。
採用單執行緒,避免了不必要的上下文切換和競爭條件,也不存在多程序或者多執行緒導致的切換而消耗 cpu,不用去考慮各種鎖的問題,不存在加鎖釋放鎖操作,沒有因為可能出現死鎖而導致的效能消耗;
使用多路 i/o 復用模型,非阻塞 io;
使用底層模型不同,它們之間底層實現方式以及與客戶端之間通訊的應用協議不一樣,redis 直接自己構建了 vm 機制 ,因為一般的系統呼叫系統函式的話,會浪費一定的時間去移動和請求;
因為使用redis可以達到高效能且適合高併發場景。因為直接讀取資料庫是需要從磁碟中讀取,讀取磁碟速度很慢。但是可以通過redis作為快取。從磁碟讀取到的資料除了返回給使用者以外還把它存在快取裡,如果再訪問此部分資料會先到快取讀取減少訪問硬碟的次數提高了讀取效率和效能。而且直接操作快取能夠承受的請求是遠遠大於直接訪問資料庫的,若把資料庫中的部分資料轉移到快取中去,那麼使用者的一部分請求會直接到快取這裡而不用經過資料庫。
因為使用 redis可以做分布式快取,在多例項的情況下,各例項共用乙份快取資料,快取具有一致性。
缺點是需要保持 redis 服務的高可用,程式架構會比較複雜。
走進單元測試(1) 為什麼難以廣泛應用?
這幾天在北京參加qcon,覺得scrum和敏捷在這裡提到的比較多,而單元測試作為敏捷方法的乙個重要配套工具,了解和真正進入實施的卻並不是很多。在我6年的技術工作中,如果問我什麼技術對我的影響最大,我會毫不猶豫的說是單元測試。我比大多數人幸運的地方就是我的第乙份寫 的工作就是編寫單元測試 沒錯,是單元...
在不久將來會被廣泛應用的8大技術趨勢
在不久將來會被廣泛應用的8大技術趨勢 技術逐漸發展,大多數消費者在考慮購買產品之前經常聽到有關產品的訊息。在產品在採用生命週期中達到落後的時候,早期採用者通常會積極使用產品多年。多年來,2016年產品增勢良好。今年,專家們將注意力轉向這八項技術,意識到它們是最可能被廣泛採用的技術型別。1.機器學習 ...
為什麼RFID標籤應用廣泛
為什麼rfid標籤應用廣泛?隨著rfid技術的發展,rfid的應用已經涉及我們生活的方方面面,比如商場的貨物管理 防偽溯源等。rfid標籤的應用優勢 2 資料容量大 資料容量最大的二維條形碼,最多也只能儲存2725個數字 若包含字母,儲存量則會更少 rfid標籤則可以根據使用者的需要擴充到數十k。3...