Redis簡介
Redis 介紹
- Remote Dictionary Server 遠端資料服務
- 記憶體快取記憶體資料庫
- C語言編寫
- key-value的資料模型
- 基本資料型別:string list hash set zset(sorted set)
- 可持久化,保證資料安全
Nosql 與 RDBMS 對比
- NoSQL是非關係型資料庫,NoSQL = Not Only SQL。
- 關係型資料庫採用的結構化的資料,NoSQL採用的是鍵值對的方式儲存資料。
- 在處理非結構化/半結構化的大資料時;在水平方向上進行擴充套件時;隨時應對動態增加的資料項時可以優先考慮使用NoSQL資料庫。
- 在考慮資料庫的成熟度;支援;分析和商業智慧;管理及專業性等問題時,應優先考慮關係型資料庫。
redis 與 memcache 對比
- redis不僅僅支援k-v,還支援list,hash,set,zset
- redis支援主從模式(master-slave)
- redis支援資料持久化
- redis value最大1GB,memcache最大1MB
redis 應用場景
1、會話快取(Session Cache)
最常用的一種使用Redis的情景是會話快取(session cache)。用Redis快取會話比其他儲存(如Memcached)的優勢在於:Redis提供持久化。當維護一個不是嚴格要求一致性的快取時,如果使用者的購物車資訊全部丟失,大部分人都會不高興的,現在,他們還會這樣嗎?
幸運的是,隨著 Redis 這些年的改進,很容易找到怎麼恰當的使用Redis來快取會話的文件。甚至廣為人知的商業平臺Magento也提供Redis的外掛。
2、全頁快取(FPC)
除基本的會話token之外,Redis還提供很簡便的FPC平臺。回到一致性問題,即使重啟了Redis例項,因為有磁碟的持久化,使用者也不會看到頁面載入速度的下降,這是一個極大改進,類似PHP本地FPC。
再次以Magento為例,Magento提供一個外掛來使用Redis作為全頁快取後端。
此外,對WordPress的使用者來說,Pantheon有一個非常好的外掛wp-redis,這個外掛能幫助你以最快速度載入你曾瀏覽過的頁面。
3、佇列(訊息佇列)
Reids在記憶體儲存引擎領域的一大優點是提供 list 和 set 操作,這使得Redis能作為一個很好的訊息佇列平臺來使用。Redis作為佇列使用的操作,就類似於本地程式語言(如Python)對 list 的 push/pop 操作。
如果你快速的在Google中搜索“Redis queues”,你馬上就能找到大量的開源專案,這些專案的目的就是利用Redis建立非常好的後端工具,以滿足各種佇列需求。例如,Celery有一個後臺就是使用Redis作為broker,你可以從這裡去檢視。
4、排行榜/計數器
Redis在記憶體中對數字進行遞增或遞減的操作實現的非常好。集合(Set)和有序集合(Sorted Set)也使得我們在執行這些操作的時候變的非常簡單,Redis只是正好提供了這兩種資料結構。所以,我們要從排序集合中獲取到排名最靠前的10個使用者–我們稱之為“user_scores”,我們只需要像下面一樣執行即可:
當然,這是假定你是根據你使用者的分數做遞增的排序。如果你想返回使用者及使用者的分數,你需要這樣執行:
ZRANGE user_scores 0 10 WITHSCORES
Agora Games就是一個很好的例子,用Ruby實現的,它的排行榜就是使用Redis來儲存資料的,你可以在這裡看到。