目錄
-
介紹
Redis是一個使用C語言編寫的key-value開源的NOSQL存儲系統。(區別於MySQL的二維表格的形式存儲)
NoSQL:no sql 沒有SQL(不支持sql查詢)
not only sql 不僅僅只有SQL
redis英文官網地址:https://redis.io/
redis中文網站地址:http://www.redis.cn/
-
NoSQL適用場景
1.對數據高併發的讀寫
2.對數據高可擴展性的
3.速度夠快,能夠快速的存取數據
取最新N個數據的操作
典型的取網站的最新文章、某一電商的最新訂單。
排行榜應用,取TOP N操作
經過排序後的前N想。例如評論最多的前10篇文章、訂單金額最多的前15名訂單。
需要精準設定過期時間的場景
微信撤回功能,兩分鐘內可以撤回,兩分鐘後過期無法撤回。微信紅包24小時未領取即過期。
計數器應用
Redis的命令都是原子性的,可以輕鬆地利用INCR,DECR命令來構建計用於計數的數器系統。
Uniq操作,獲取某段時間所有數據排重值
適用於對某段時間內所有數據進行去重。例如計算網站的UV數量。
Pub/Sub構建實時消息系統
Redis的Pub/Sub系統可以構建實時的消息系統,比如很多用Pub/Sub構建的實時聊天系統的例子。
緩存
緩存最新的、最熱的、用戶最常用的數據。
熱數據:經常被使用數據、高頻使用的數據就是熱數據。
構建隊列系統
-
NoSQL不適用場景
1.需要事務支持
2.基於sql的結構化查詢存儲,處理複雜的關係,需要即席查詢(用戶自定義查詢條件的查詢)。
-
NoSQL數據庫舉例
memcache:
很早出現的NoSql數據庫數據都在內存中,一般不持久化支持簡單的key-value模式一般是作爲緩存數據庫輔助持久化的數據庫
redis:
幾乎覆蓋了Memcached的絕大部分功能數據都在內存中,支持持久化,主要用作備份恢復除了支持簡單的key-value模式,還支持多種數據結構的存儲,比如 list、set、hash、zset等。一般是作爲緩存數據庫輔助持久化的數據庫
現在市面上用得非常多的一款內存數據庫
mongoDB:
高性能、開源、模式自由(schema free)的文檔型數據庫數據都在內存中, 如果內存不足,把不常用的數據保存到硬盤雖然是key-value模式,但是對value(尤其是json)提供了豐富的查詢功能支持二進制數據及大型對象可以根據數據的特點替代RDBMS(關係數據庫管理系統) ,成爲獨立的數據庫。或者配合RDBMS,存儲特定的數據。
HBase:
HBase是Hadoop項目中的數據庫。它用於需要對大量的數據進行隨機、實時的讀寫操作的場景中。HBase的目標就是處理數據量非常龐大的表,可以用普通的計算機處理超過10億行數據,還可處理有數百萬列元素的數據表。
-
redis的特點
高效性:Redis讀取的速度是110000次/s,寫的速度是81000次/s
原子性:Redis的所有操作都是原子性的,同時Redis還支持對幾個操作全並後的原子性執行。
支持多種數據結構:string(字符串),list(列表),hash(哈希),set(集合),zset(有序集合)
穩定性:持久化,主從複製(集羣)
其他特性:支持過期時間,支持事務,消息訂閱。
-
redis的數據類型
redis當中一共支持五種數據類型,分別是string字符串類型,list列表類型,集合set類型,hash表類型以及有序集合zset類型,通過這五種不同的數據類型,我們可以實現各種不同的功能,也可以應用與各種不同的場景
redis當中各種數據類型結構圖: