redis是什么_什么是Redis?为什么我们要用Redis?
前言
當結束Java和數據庫的學習以后,你就會接觸到Redis這個詞,我第一次聽到的時候腦海里就會浮現這兩個問題:
什么是Redis?為什么我們要用Redis?
我了解完以后,寫出來幫助大家能夠更快的認識它。
我們先來看它的定義:
Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基于內存亦可持久化的日志型、Key-Value數據庫,并提供多種語言的API。
換句話說,Redis就像是一個HashMap,不過不是在JVM中運行,而是以一個獨立進程的形式運行。
一般說來,會被當作緩存使用。 因為它比數據庫(mysql)快,所以常用的數據,可以考慮放在這里,這樣就提高了性能。
總歸一個字:快!
快在哪里呢?
這個問題在大并發,高負載的網站中必須考慮.redis數據庫中的所有數據都存儲在內存中。由于內存的讀寫速度遠快于硬盤,因此Redis的的的在性能上對比其他基于硬盤存儲的數據庫有非常明顯的優勢。
項目中使用Redis的的的,主要是從兩個角度去考慮:性能狀語從句:并發。當然,Redis的的的還具備可以做分布式鎖等其他功能,但是如果只是為了分布式鎖這些其他功能,完全還有其他中間件代替,并不是非要使用Redis的的的。因此,這個問題主要從性能和并發兩個角度去答。
1.性能:
我們在碰到需要執行耗時特別久,且結果不頻繁變動的SQL,就特別適合將運行結果放入緩存,這樣,后面的請求就去緩存中讀取,請求使得能夠迅速響應。
2.并發
在大并發的情況下,所有的請求直接訪問數據庫,數據庫會出現連接異常。這個時候,就需要使用的的Redis的做一個緩沖操作,讓請求先訪問到的Redis的的,而不是直接訪問數據庫。
redis的優勢
1,運行在內存,速度快官方號稱支持并發11瓦特讀操作,并發8瓦特寫操作,可以說是相當彪悍了。
2,數據雖在內存,但是提供了持久化的支持,即可以將內存中的數據異步寫入到硬盤中,同時不影響繼續提供服務
3,支持數據結構豐富(string(字符串),list(鏈表),set(集合),zset(sorted set - 有序集合))和Hash(哈希類型,md5加密出來的那個串)
注意與補充
Redis的缺點
是數據庫容量受到物理內存的限制,不能用作海量數據的高性能讀寫,因此Redis適合的場景主要局限在較小數據量的高性能操作和運算上。Redis受限于特定的場景,專注于特定的領域之下,速度相當之快,目前還未找到能替代使用產品。
Redis不是什么?從兩個方面來做下對比
1. 不是sql server、mySQL等關系型數據庫,主要原因是:
redis目前還只能作為小數據量存儲(全部數據能夠加載在內存中) ,海量數據存儲方面并不是redis所擅長的領域。
設計、實現方法很不一樣.關系型數據庫通過表來存儲數據,通過SQL來查詢數據。而Redis通上述五種數據結構來存儲數據,通過命令 來查詢數據。
2. 不是Memcached等緩存系統,主要原因有以下幾個:
- 網絡IO模型方面:Memcached是多線程,分為監聽線程、worker線程,引入鎖,帶來了性能損耗。Redis使用單線程的IO復用模型,將速度優勢發揮到最大,也提供了較簡單的計算功能。
- 內存管理方面:Memcached使用預分配的內存池的方式,帶來一定程度的空間浪費 并且在內存仍然有很大空間時,新的數據也可能會被剔除,而Redis使用現場申請內存的方式來存儲數據,不會剔除任何非臨時數據 Redis更適合作為存儲而不是cache。
- 數據的一致性方面:Memcached提供了cas命令來保證.而Redis提供了事務的功能,可以保證一串 命令的原子性,中間不會被任何操作打斷。
- 存儲方式方面:Memcached只支持簡單的key-value存儲,不支持枚舉,不支持持久化和復制等功能。
一句話小結:Redis是一個高性能的key-value數據庫。 redis的出現,很大程度補償了memcached這類key/value存儲的不足,在部分場合可以對關系數據庫起到很好的補充作用。
總結
以上是生活随笔為你收集整理的redis是什么_什么是Redis?为什么我们要用Redis?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python彩票数据分析案例_天津Pyt
- 下一篇: mysql 查询 系统字段 自然日_My