1. 程式人生 > >【Redis】——NoSql與Redis之間的XXOO

【Redis】——NoSql與Redis之間的XXOO

NoSql概念

NoSQL(NoSQL = Not Only SQL ),意即“不僅僅是SQL”,它泛指非關係型的資料庫

分類

Redis概念

Redis 是一個高效能開源C語言寫的Nosql非關係型資料庫),資料儲存在記憶體中。

Redis 是以key-value形式儲存,和傳統的關係型資料庫不一樣。不一定遵循傳統資料庫的一些基本要求,比如說,不遵循sql標準,事務,表結構等等,非關係型資料庫嚴格上不是一種資料庫,應該是一種資料結構化儲存方法的集合。

特點

1.資料儲存在記憶體,存取速度快,併發能力強

2.它支援儲存的value型別相對更多,包括string(字串)

、list(連結串列)、set(集合)、 zset(sorted set --有序集合)和hash(雜湊型別)。

3.redis的出現,很大程度補償了memcached這類key/value儲存的不足,在部分場合可以對關係資料庫(如MySQL)起到很好的補充作用。

4.它提供了Java,C/C++,C#,PHP,JavaScript等客戶端,使用很方便。

5.Redis支援叢集主從同步、負載均衡)。資料可以主伺服器向任意數量從的從伺服器上同步,從伺服器可以是關聯其他從伺服器的主伺服器。

6.支援持久化,可以將資料儲存在硬碟的檔案中

7.支援訂閱/釋出(subscribe/publish)功能 QQ群

1、資料存放:存放到記憶體中,還能不定期持久化到磁碟。存取速度快,併發能力強,斷電後資料不丟失。

2、支援Value型別更多。

3、多種客戶端(語言 java php c# js)

4、支援叢集來擴充套件空間 8G+8G+16G

5、開源(免費還有很多人維護)

補充

Mysql、Memcached和Redis的比較

 

mysql

redis

memcached

型別

關係型

非關係型

非關係型

儲存位置

磁碟

磁碟和記憶體

記憶體

儲存過期

不支援

支援

支援

讀寫效能

非常高

非常高

使用場景

1.快取(新聞列表)

經常查詢資料,放到讀速度很快的空間(記憶體),以便下次訪問減少時間。減輕資料庫壓力,減少訪問時間.而redis就是存放在記憶體中的。

Hibernte二級快取(ehcache)

2.計數器應用

網站通常需要統計註冊使用者數網站總瀏覽次數等

新浪微博轉發數、點贊數

3.實時防攻擊系統

暴力破解:使用工具不間斷嘗試各種密碼進行登入。防:ip--->num,到達10次以後自動鎖定IP,30分鐘後解鎖

解決方案:

     1、存資料庫

 2、static Map<String,int> longinFailNumMap;

          Map儲存空間有限,大批量就不行,並且斷電以後資料丟失。

問題:Redis能解決

    1、每次查詢資料庫,查詢速度慢,多次寫 記憶體

    2、斷電會丟失資料,多個節點,不能共用   redis叢集,容量可以無限大,可以共享資料、、

Key  value  time  企業手法(封ip)

192.   1      1s

 0.2 1 1.9 15次

並且支援過期  

4.排行榜

總積分榜,今日積分榜,周積分,月積分,季度積分

方案:從資料庫中查出來計算.

5.設定有效期的應用

設定一個數據,到一定的時間失效。 自動解鎖,購物券

6.自動去重應用

Uniq 操作,獲取某段時間所有資料排重值 這個使用 Redis 的 set 資料結構最合適了,只需要不斷地將資料往 set 中扔就行了,set 意為 集合,所以會自動排重。

7.佇列

構建佇列系統 使用 list 可以構建佇列系統,使用 sorted set 甚至可以構建有優先順序的佇列系統。

秒殺可以把名額放到記憶體佇列(redis),記憶體就能處理高併發訪問。限流

8.訊息訂閱系統

Pub/Sub 構建實時訊息系統 Redis 的 Pub/Sub 系統可以構建實時的訊息系統,比如很多用 Pub/Sub 構建的實時聊天系統 的例子。

比如QQ群訊息