Java編程細節-重構-為什麼 if-else 不是好代碼

來源:互聯網
上載者:User

標籤:free   原子性   分配   key   掃描   聯絡   重構   包括   分布   

一、緩衝在系統中用來做什麼

  1. 少量資料存放區,高速讀寫訪問。通過資料全部in-momery 的方式來保證高速訪問,同時提供資料落地的功能,實際這正是Redis最主要的適用情境。

  2. 海量資料存放區,分布式系統支援,資料一致性保證,方便的叢集節點添加/刪除。Redis3.0以後開始支援叢集,實現了半自動化的資料分區,不過需要smart-client的支援。

二、從不同的角度來詳細介紹redis

網路模型:Redis使用單線程的IO複用模型,自己封裝了一個簡單的AeEvent事件處理架構,主要實現了epoll、kqueue和select,對於單純只有IO操作來說,單線程可以將速度優勢發揮到最大,但是Redis也提供了一些簡單的計算功能,比如排序、彙總等,對於這些操作,單執行緒模式實際會嚴重影響整體輸送量,CPU計算過程中,整個IO調度都是被阻塞住的。

記憶體管理:Redis使用現場申請記憶體的方式來儲存資料,並且很少使用free-list等方式來最佳化記憶體配置,會在一定程度上存在記憶體片段,Redis跟據儲存命令參數,會把帶到期時間的資料單獨存放在一起,並把它們稱為臨時資料,非臨時資料是永遠不會被剔除的,即便實體記憶體不夠,導致swap也不會剔除任何非臨時資料(但會嘗試剔除部分臨時資料),這點上Redis更適合作為儲存而不是cache。

資料一致性問題:在一致性問題上,個人感覺redis沒有memcached實現的好,Memcached提供了cas命令,可以保證多個並發訪問操作同一份資料的一致性問題。 Redis沒有提供cas 命令,並不能保證這點,不過Redis提供了事務的功能,可以保證一串命令的原子性,中間不會被任何操作打斷。

支援的KEY類型:Redis除key/value之外,還支援list,set,sorted set,hash等眾多資料結構,提供了KEYS進行枚舉操作,但不能線上上使用,如果需要枚舉線上資料,Redis提供了工具可以直接掃描其dump檔案,枚舉出所有資料,Redis還同時提供了持久化和複製等功能。

用戶端支援:redis官方提供了豐富的用戶端支援,包括了絕大多數程式設計語言的用戶端,比如我此次測試就選擇了官方推薦了Java用戶端Jedis.裡面提供了豐富的介面、方法使得開發人員無需關係內部的資料分區、讀取資料的路由等,只需簡單的調用即可,非常方便。

資料複製:從2.8開始,Slave會周期性(每秒一次)發起一個Ack確認複製流(replication stream)被處理進度

讀寫分離:redis支援讀寫分離,而且使用簡單,只需在設定檔中把redis讀伺服器和寫伺服器進行配置,多個伺服器使用逗號分開如下:

水平動態擴充:曆時三年之久,終於等來了期待已由的Redis 3.0。新版本主要是實現了Cluster的功能,增刪叢集節點後會自動的進行資料移轉。實現 Redis 叢集線上重配置的核心就是將槽從一個節點移動到另一個節點的能力。因為一個雜湊槽實際上就是一些鍵的集合, 所以 Redis 叢集在重雜湊(rehash)時真正要做的,就是將一些鍵從一個節點移動到另一個節點。

資料淘汰策略:redis 記憶體資料集大小上升到一定大小的時候,就會施行資料淘汰策略。

Java進階架構
連結:https://www.jianshu.com/p/8079a3fb4c95
來源:簡書
簡書著作權歸作者所有,任何形式的轉載都請聯絡作者獲得授權並註明出處。

Java編程細節-重構-為什麼 if-else 不是好代碼

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.