redis是一款高性能的NoSql系列的非關係型數據庫web
1什麼是Nosqlredis
NoSql()NoSql = not only sql) 意思,不單單是sql,是一項全新的數據庫理念,泛指非關係型的數據庫。web2.0純動態網站已經略顯力不存心,暴露了不少難以克服的問題,而非關係型數據庫則因爲自己的特色,獲得了很是迅猛的發展。算法
Nosql數據庫的產生就是爲了解決大規模集合多重數據種類帶來的挑戰,尤爲是大數據應用的難題。sql
NoSql和關係型數據庫比較數據庫
1優勢: 緩存
1) 成本:nosql數據庫簡單易部署,基本都是開源軟件,不須要像使用oralce那樣話費大量成本去購買使用,相比關係型數據庫價格便宜安全
2)查詢速度:nosql數據庫將數據存於緩存之中,關係型數據庫將數據存儲於硬盤之中網絡
3)存儲形式:nosql存儲格式是Key,value形式,文檔形式,圖片形式,因此能夠村吃基礎類型,以及對象或者集合各類格式,而數據庫只支持基礎數據類型。數據結構
4)擴展性:關係型數據庫有相似於join類型這樣的擴展致使很艱難併發
缺點:
1)維護工具和資料有限,由於nosql屬於新的技術,不能和關係型數據庫10幾年的技術同日而語
2)不提供對sql的支持,若是不支持sql這樣的工業標準,將產生用戶必定的學習和使用成本
3)不提供關係型數據庫對事物的處理
1.1.2 非關係型數據庫的優點
Nosql是基於鍵值對的,數據之間沒有耦合性,所以很是容易水平擴展
1.1.3關係型數據庫的優點:
1)複雜查詢可使用sql語句在一個或者多個表之間進行擴展
2)事物支持使得對於安全性能很高的數據訪問要求得以實現,對於這兩類數據庫,對方的優點就是本身的劣勢,反之亦然。
主流的NoSql產品:
1鍵值對存儲數據庫
1相關產品 Tokyo Cabinet/Tyrant、Redis、Voldemort、Berkeley DB
2典型應用:內容緩存,主要用於處理大量數據的高訪問。
3數據模型 一系列鍵值對。
2列存儲數據庫
相關產品:Cassandra, HBase, Riak
典型應用:分佈式的文件系統
數據模型:以列簇式存儲,將同一列數據存在一塊兒
優點:查找速度快,可擴展性強,更容易進行分佈式擴展
劣勢:功能相對侷限
• 3 文檔型數據庫
相關產品:CouchDB、MongoDB
典型應用:Web應用(與Key-Value相似,Value是結構化的)
數據模型: 一系列鍵值對
優點:數據結構要求不嚴格
劣勢: 查詢性能不高,並且缺少統一的查詢語法
• 4圖形(Graph)數據庫
相關數據庫:Neo4J、InfoGrid、Infinite Graph
典型應用:社交網絡
數據模型:圖結構
優點:利用圖結構相關算法。
劣勢:須要對整個圖作計算才能得出結果,不容易作分佈式的集羣方案。
什麼是redis?
Redis是用C語言開發的一個開源的高性能鍵值對(key-value)數據庫,官方提供測試數據,50個併發執行100000個請求,讀的速度是110000次/s,寫的速度是81000次/s ,且Redis經過提供多種鍵值數據類型來適應不一樣場景下的存儲需求,目前爲止Redis支持的鍵值數據類型以下.
1)字符串類型String
2)哈希類型hash
3)列表類型list
4)集合類型set
5)有序集合類型 sortedset
1.3命令操做
redis的數據結構
redis數據存儲是key value格式的數據,其中 key都是字符串, value 有5種不一樣的數據結構
value的數據結構
1字符串類型 String
2哈希類型 hash :map 結構
3列表結構 list : linkedList格式,支持重複元素
4set:不容許重複元素
5sortedset,不容許重複元素,切元素有序
1.4 字符創String
存儲: set key value
獲取 :get key:
哈希類型:hash
存儲: hset key filed value
獲取:hget key field //獲取指定field對應的值
hgetall key //獲取全部field和對應的值
刪除
hdel key field 刪除指定屬性的值,
1.5列表類型 list:能夠添加一個元素到列表的頭部或者尾部 該list集合爲linkedlist
1添加:
lpush key value:將元素加入列表的左邊
rpush key valyue :將元素加入列表的右邊
2獲取:
lrange key start end : 範圍獲取 當end爲-1時,獲取list集合的所有value
3刪除
lpop key 刪除list最左邊的元素
rpop key 刪list除最右邊的元素
4集合類型 set :不容許重複元素
1存儲:sadd key value
獲取:smembers key 獲取set集合中是全部元素
刪除:srem key value 刪除set集合中的某個元素
5有序集合類型:sortedset 不容許重複元素,切元素有順序,每隔元素都會關聯一個double類型的分數,redis正是經過分數來爲集合中的元素進行從小到大的排序
1存儲
zadd key score value
2獲取
zrange key start end [withscores]
3刪除:
zrem key value
7通用命令
1 keys * :查詢全部鍵
2. type key 獲取鍵對應的 value類型
3 del key 刪除指定的key value