Redis是完全開源免費的,遵守BSD協議,是一個高效能的鍵值資料庫。是目前最熱門的的的NoSql資料庫之一,也被人們稱為資料結構伺服器。
那為什麼要用Redis的的的呢?
原因很簡單,快!
這個問題在大並發,高負載的網站中必須考慮.redis資料庫中的所有資料都儲存在記憶體中。由於記憶體的讀寫速度遠快於硬碟,因此Redis的的的在效能上對比其他基於硬碟儲存的資料庫有非常明顯的優勢。
專案中使用Redis,主要是從兩個角度去考慮:在效能狀語子句:並發。當然,Redis還具備可以做分散式鎖等其他功能,但是如果只是為了分散式鎖這些其他功能,完全還有其他中間件代替,並不是要使用Redis。因此,這個問題主要從性能和並發兩個角度去答。
效能:
我們在碰到需要執行耗時特別久,且結果不頻繁變動的SQL,就特別適合將執行結果放入緩存,這樣,後面的請求就去快取中讀取,請求使得能夠迅速回應。
並發:
在大並發的情況下,所有的請求直接存取資料庫,資料庫會出現連線異常。這時候,就需要使用的的Redis的做一個緩衝操作,讓請求先存取到的Redis,而不是直接存取資料庫。
redis的優勢:
1,運行在內存,速度快官方號稱支持並發11瓦特讀操作,並發8瓦特寫操作,可以說是相當彪悍了。
2,資料雖在內存,但是提供了持久化的支持,即可以將內存中的資料異步寫入到硬碟中,同時不影響繼續提供服務
3,支持資料結構豐富(string(字串),list(鍊錶),set(集合),zset(sorted set - 有序集合))和Hash(哈希類型,md5加密出來的那個字串)
Redis都可以幹嘛
緩存,毫無疑問這是Redis當今最為人熟知的使用場景,再提升伺服器效能方面非常有效。
1.排行榜,如果使用傳統的關係型資料庫來做,非常麻煩,而利用Redis的SortSet資料結構能夠非常方便搞定;
2.計算器/限速器,利用Redis中原子性的自增操作,我們可以統計類似用戶點讚數、用戶訪問數等,這類操作如果用MySQL,頻繁的讀寫會帶來相當大的壓力;限速器比較典型的使用場景是限制某個使用者存取某個API的頻率,常用的有搶購時,防止使用者瘋狂點擊帶來不必要的壓力;
3.好友關係,利用集合的一些指令,例如求交集、並集、差集等,可以方便搞定一些共同好友、共同愛好之類的功能;
#4.簡單訊息隊列,除了Redis自身的發布/訂閱模式,我們也可以利用List來實作一個佇列機制,像是到貨通知、郵件發送之類的需求,不需要高可靠,但會帶來非常大的DB壓力,完全可以用List來完成非同步解耦;
#5. Session共享,以PHP為例,預設Session是保存在伺服器的檔案中,如果是叢集服務,同一個用戶過來可能落在不同機器上,這就會導致用戶頻繁登陸;採用Redis保存Session後,無論用戶落在那台機器上都能夠取得對應的Session資訊。
以上是為什麼要用redis的詳細內容。更多資訊請關注PHP中文網其他相關文章!