JIDIJI
技術無對錯,選擇對項目開發最合適的,自己最熟悉的技術是永恆的真理。一些上古程序員堅持反對Redis,該怎麼辦?下面談談自己的看法。
什麼是Redis
Redis是一個開源的、基於內存的數據結構存儲器,可以用作數據庫、緩存和消息中間件,使用ANSI C語言編寫、遵守BSD協議、支持網絡、可基於內存亦可持久化的日誌型、Key-Value數據庫,並提供多種語言的API。
上古程序員一直堅持反對使用redis怎麼辦?
其實,上古程序猿數據庫用的比較好,SQL寫的質量比較高,知道什麼情況下能用到索引,什麼情況下SQL數據會被緩存。用好了SQL不用Redis是完全可以的。
對於緩存保持謹慎態度是完全沒有問題的。因為很多時候緩存會掩蓋掉一些問題。比如緩存溢出攻擊(不是緩存區溢出攻擊),用大量無效的數據佔滿緩存空間使得系統性能急劇下降,比如經常會遇到的由於系統緩衝區空間不足或隊列已滿,不能執行套接字上的操作等錯誤提示。
其實,不僅僅是緩存,所有的中間件在解決一部分問題的時候必然會帶來其他的問題。比如說分佈式計算帶來了無限擴容的好處,但是如何保證數據一致性又是帶來的一大問題!
所以,對於堅持反對使用redis的上古程序員,沒有必要去爭執,對於緩存,謹慎的態度是不會有錯的!技術無對錯,合適的、自己熟悉的永遠是最好的。
本文為作者“一個程序員的奮鬥史”悟空問答原創文章,未經允許轉載、抄襲必究!一個程序員的奮鬥史
一個非常好的問題。我是工作多年的Web應用架構師,來回答一下這個問題。歡迎關注我,瞭解更多IT專業知識。
題主沒有說明原因和理由,在實際項目中可能出現多種場景,不能一概而論。
1,前期預研項目,Demo演示功能,沒必要使用
如果原型驗證的重點是某一項技術,沒時間開發那麼完善的系統,這時先不用Redis搭建緩存優化性能什麼的,是可以接受的。
2,小型單機項目,功能簡單,業務邏輯單一
功能簡單的小項目,用戶量少,或者對運行效率沒那麼敏感,為了保持一個簡單的系統架構,方便運維管理,倒是不必要引入那麼多的依賴服務,也不用佔用不必要的服務器資源。
3,公司內部項目,早期開發階段,快速迭代,業務需求變化大
有那麼一類軟件系統,是給公司內部自己人用的,各個部門老大就是拍腦袋定需求的核心用戶,帶來的問題就是需求改動大、開發返工甚至項目取消都有很大的可能性。尤其是在早期開發階段,還沒有沉澱下來一個相對明確的系統框架,這時的重點應該放在業務需求上,不用過度設計技術架構。
4,項目中已經使用了其它類似的技術框架,比如Memcached, MongoDB,等等
Redis是一個高性能的key-value數據庫,常用於搭建緩存系統,提高併發響應速度。Redis使用非常普遍,簡單輕量,部署維護方便,是很多人使用的第一個NoSQL數據庫,很受歡迎。
類似的技術解決方案也可以使用其它框架,比如Memcached,MongoDB,不同技術背景的個人和團隊有不同偏好,很正常。
急速馬力快de源碼客
不要因為用而用,考慮實際需要才是真的。當然不排除你的客戶或者老闆不差錢,不知從哪裡聽說了這玩意兒管用,於是就非要用,或者你覺得把它列入你的方案能使整個方案看起來更高大上,便於你最終抬高項目預算。
斯人若月
redis優勢在於聯機共享內存,如果只是一個單機項目,確實還不如走本地緩存。
但是如果涉及到負載均衡,或者緩存量太大,本地塞不下,就得考慮非本地緩存了!
redis是聯機共享緩存中做的比較好的一款產品,除非項目定位就是小眾,沒啥業務量。如果是大型項目,需要趁早做好緩存設計。
小謝人家
要看需不需要
phoenix3496
為什麼要反對,讓他搞秒殺,撐不住了他就知道用redis了
搬磚碼磚
以前沒redis你還不活了嗎?
無聲De雷
沒有上下文的提問,提問者應該還是菜鳥!但是語氣中卻充滿對前輩的不屑,這樣的菜鳥會有人帶嗎?
阿卡627
本身就是 千把人的系統為什麼要用 redis呢。
紅星閃閃pinb
換一種唄。又不是沒有替代品。同類型的kv高效緩存太多了。不見得全球人都在用redis。