Redis之1——Redis簡介

目錄

1 爲什麼要有Reids?

2 什麼是NoSql

3 以電商場景爲例的海量用戶、高併發的解決方案

4 Redis的概念

5 redis的應用場景


1 爲什麼要有Reids?

在一些網站中,會在特定的時候出現兩種情況,海量用戶和高併發,比如京東的618,年底的12306,12306崩潰的現象相信在坐的各位都見過。那麼,在海量用戶和高併發的情況下,爲什麼會造成各大網站的崩潰呢。

罪魁禍首就是關係型數據庫,我們知道CPU是和高速緩存進行數據交換的,高速緩存是和內存進行數據交換的,而內存的數據交換是和磁盤進行的。我們知道,關係型數據庫例如MySQL,它的信息都是存放在硬盤上的,在用戶進行訪問操作的時候,需要將數據從硬盤中一層一層的往上傳遞,因此在海量用戶和高併發的情況下,性能低下,造成崩潰。

下面列出了關係型數據庫的幾個瓶頸:

  • 性能瓶頸:磁盤IO性能低下
  • 擴展瓶頸:數據關係複雜,擴展性能差,不便於大規模集羣

根據關係型數據的幾個瓶頸,那麼海量用戶和高併發情況下,爲了防止崩潰的一個解決思路就是:

  • 降低磁盤IO次數,越低越好:採用內存存儲
  • 去除數據間的關係,越簡單越好:不存關係,只存數據

這樣的一種解決思路,其實就是NoSql。

2 什麼是NoSql

NoSQL(Not Only SQL),字面意思爲不僅僅是SQL,它泛指非關係型數據庫,作爲關係型數據庫的補充。

注意:NoSQL這是關係型數據庫的一種補充,真正的數據還是存放於關係型數據庫中,存放於磁盤中。即NoSQl中的數據來源與關係型數據庫。

NoSql的作用是應對基於海量用戶和海量數據前提下的數據處理問題。有可伸縮、擴容,大數據量下的高性能,靈活的數據模型等特徵。

常見的NoSql數據庫有以下幾種:

  • Redis
  • memcache
  • HBase
  • MongoDB

3 以電商場景爲例的海量用戶、高併發的解決方案

在上圖中,熱點信息是來源於前面的四種信息的,從模型中我們可以看出,電商會根據數據的特徵將其存放在不同的地方,然後對外提供服務,圖中很清晰的闡述了一點:NoSQL是關係型數據庫的補充。

上圖可以讓大家瞭解到在編程中到底NoSQl是處於一個什麼樣的位置。

4 Redis的概念

Redis(REmote Dictionary Server)是一個用c語言開發的開源的、高性能鍵值對(key-value)數據庫。

我再通俗的理解以下,首先它是一個數據庫,數據庫裏面的信息不像我們MySQL那樣有表,表裏面纔是一條一條的數據。

redis裏面存放的直接是一條一條的數據,並且數據的格式都是鍵值對形式的,即age : 15,    name :‘zhangsan’這樣的形式。

redis的特徵如下:

由於採用了鍵值對的形式,因此redis數據庫中的數據沒有必然的關聯關係,同時由於redis內部採用單線程機制進行工作,安全性能有了保證。在官方的測試數據中,50個併發執行100000個請求,讀的速度是110000次/s,寫的速度是81000次/s,性能非常優越。

同時redis支持多種數據類型:包括string、list、hash、set、sorted_set等。注意這些類型說的都是value的類型,因爲鍵的類型都是string類型的。

最後redis還支持持久化。

5 redis的應用場景

  • 熱點數據的加速查詢(主要場景),如商品推薦、熱點新聞等
  • 任務對列,秒殺、搶購等
  • 即時信息查詢,排位榜,網站訪問統計等
  • 時效性信息,驗證碼控制,投票等
  • 分佈式數據共享,如分佈式集羣架構中的session分離、
  • 消息對列
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章