redis概述:
redis是一個key-value的nosql數據庫(非關係型數據庫)。支持存儲的value類型包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。爲了保證效率,數據都是緩存在內存中。
redis使用場景:
- 登錄會話存儲:存儲在redis中,與memcached相比,數據不會丟失。
- 排行版/計數器:比如一些秀場類的項目,經常會有一些前多少名的主播排名。還有一些文章閱讀量的技術,或者新浪微博的點贊數等。
- 作爲消息隊列:比如celery就是使用redis作爲中間人。
- 當前在線人數:還是之前的秀場例子,會顯示當前系統有多少在線人數。
- 一些常用的數據緩存:比如我們的BBS論壇,板塊不會經常變化的,但是每次訪問首頁都要從mysql中獲取,可以在redis中緩存起來,不用每次請求數據庫。
- 把前200篇文章緩存或者評論緩存:一般用戶瀏覽網站,只會瀏覽前面一部分文章或者評論,那麼可以把前面200篇文章和對應的評論緩存起來。用戶訪問超過的,就訪問數據庫,並且以後文章超過200篇,則把之前的文章刪除。
- 好友關係:微博的好友關係使用redis實現。
- 發佈和訂閱功能:可以用來做聊天軟件。
redis和memcached的比較:
memcached |
redis |
|
類型 |
純內存數據庫 |
內存磁盤同步數據庫 |
數據類型 |
在定義value時就要固定數據類型 |
不需要 |
虛擬內存 |
不支持 |
支持 |
過期策略 |
支持 |
支持 |
存儲數據安全 |
不支持 |
可以將數據同步到dump.db中 |
災難恢復 |
不支持 |
可以將磁盤中的數據恢復到內存中 |
分佈式 |
支持 |
主從同步 |
訂閱與發佈 |
不支持 |
支持 |