有些“上古”程序員一直堅持反對使用redis怎麼辦?

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。


分享到:


相關文章: