redis是一個(gè)key-value的nosql數(shù)據(jù)庫(非關(guān)系型數(shù)據(jù)庫)。支持存儲(chǔ)的value類型包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set –有序集合)和hash(哈希類型)。這些數(shù)據(jù)類型都支持push/pop、add/remove及取交集并集和差集及更豐富的操作,而且這些操作都是原子性的。為了保證效率,數(shù)據(jù)都是緩存在內(nèi)存中。
NoSQL非關(guān)系型數(shù)據(jù)庫,主要指那些非關(guān)系型的、分布式的,且一般不保證ACID的數(shù)據(jù)存儲(chǔ)系統(tǒng),主要代表MongoDB,redis、CouchDB。(推薦學(xué)習(xí):Redis視頻教程)
NoSQL提出了另一種理念,以鍵值來存儲(chǔ),且結(jié)構(gòu)不穩(wěn)定,每一個(gè)元組都可以有不一樣的字段,這種就不會(huì)局限于固定的結(jié)構(gòu),可以減少一些時(shí)間和空間的開銷。使用這種方式,為了獲取用戶的不同信息,不需要像關(guān)系型數(shù)據(jù)庫中,需要進(jìn)行多表查詢。僅僅需要根據(jù)key來取出對應(yīng)的value值即可。
面向高性能并發(fā)讀寫的key-value數(shù)據(jù)庫
主要特點(diǎn)是具有極高的并發(fā)讀寫性能,例如Redis.
NoSql適合存儲(chǔ)非結(jié)構(gòu)化數(shù)據(jù),比如:文章、評論:
(1)這些數(shù)據(jù)通常用于模糊處理,例如全文搜索、機(jī)器學(xué)習(xí),適合存儲(chǔ)較為簡單的數(shù)據(jù)。
(2)這些數(shù)據(jù)是海量的,并且增長的速度是難以預(yù)期的。
(3)按照key獲取數(shù)據(jù)效率很高,但是對于join或其他結(jié)構(gòu)化查詢的支持就比較差。
NoSql通過橫向拓展,非關(guān)系型數(shù)據(jù)庫天然是分布式的,所以可以通過集群來實(shí)現(xiàn)負(fù)載均衡。
非關(guān)系型是平面數(shù)據(jù)集合中,數(shù)據(jù)經(jīng)常可以重復(fù),單個(gè)數(shù)據(jù)庫很少被分開,而是存儲(chǔ)成為一個(gè)整體,這種整塊讀取數(shù)據(jù)效率更高。
SQL數(shù)據(jù)庫依然強(qiáng)大,可以可靠的處理事務(wù)并且保持事務(wù)的完整性,只有你的數(shù)據(jù)非常大,操作擴(kuò)展需要更加分布式的系統(tǒng)時(shí),才考慮NoSql數(shù)據(jù)庫。
更多Redis相關(guān)技術(shù)文章,請?jiān)L問Redis視頻教程欄目進(jìn)行學(xué)習(xí)!