KV上MySQL與Redis的PK
自己原文公眾號: https://mp.weixin.qq.com/s/UfgCoVfe21q7bYiu2XtG3Q
首先我要說一下redis真的很強,使用也廣泛,而且使用簡單,在資料庫兵器譜排行中KV領域的第一。
不過在我接觸過程中發現不少系統對redis依賴很強,甚至達到了沒redis日子過不下去的程度。我不由得想那沒有redis之前我們的系統就活不下去了嗎?不見得。就像沒有hadoop之前該怎麼幹活就怎麼幹活,四大行和三大運營商該出報表出報表。沒聽說這兩個公司無法決策。(有時候技術被濫用了也是一種悲哀)
言歸正傳,比如微博以前用redis快取,其實不管什麼系統用redis快取我覺得都沒錯。但是不能說沒有redis就停止服務,假設redis被擊穿,或者發生問題。我們還是要繼續走下去的,只是走的很慢。也就是說外圍部隊擋不住了,我就是打巷戰也要堅持,不能說redis一完蛋就全體投降了。redis是資料庫,記憶體資料庫。後面還有Oracle、MySQL、PostgreSQL這些資料庫,而且這些資料庫都不是白給的。所不同的是redis的不需要SQL解析,而關係型資料庫需要解析的。但是對於Oracle這種軟軟解析的來說,其實問題也不大。
redis是單執行緒的,我們不能說全指望一個執行緒不出現問題,甚至不允許出現慢。如果能做到這個,那麼我想在關係型資料庫層面也能做得到。其實關係型資料庫不管是Oracle的多程式還是MySQL這樣的多執行緒都不是吃素的。我以前有三篇模擬。
https://mp.weixin.qq.com/s?__biz=Mzk0NDIxNDg5Mg==&mid=2247483843&idx=1&sn=a185aa932124c2987e34a4d78e3c3d40&chksm=c32947c0f45eced67261c7e0367830ed219a9401ef58d06bd198818879490e5da924d1971a27&token=1191007506&lang=zh_CN#rd
https://mp.weixin.qq.com/s?__biz=Mzk0NDIxNDg5Mg==&mid=2247483850&idx=1&sn=122bade9a68be1d05bfef95a2eeef4d7&chksm=c32947c9f45ecedf9ae7ac7201e5e801aff3f85b7618951177f15cc23d07b73c5d8d49788492&token=1191007506&lang=zh_CN#rd
https://mp.weixin.qq.com/s?__biz=Mzk0NDIxNDg5Mg==&mid=2247483855&idx=1&sn=8bdc3c4f09d2641451255dab2a45f42e&chksm=c32947ccf45eceda753997203e757f2a443cb6c5df0da7646b00c6f86251b7e0b902d25fa7b1&token=1191007506&lang=zh_CN#rd
最近安排了新人做幾個壓測。剛工作沒多久的孩子做事還不錯的。
redis 壓測不同key 長度下10w key 的qps
這裡正好說明越大越慢。本來redis的規範也是要禁止大key。可以看出一般每秒4萬的QPS是很正常的。在網上也是可以的需要cluster模式,以及阿里雲企業版什麼的了。社群版這個資料說的過去。
後面的結果是這樣的
談好了redis看看mysql的。(oracle和PG同理)
剛開始她用了2個C的mysql效果不太好
我讓她加到8個C,就是下面這樣子。充分發揮資料庫的優勢。(注意這個MySQL是預設引數,沒做任何最佳化)
可以看出每秒也有6w。單機MySQL,無最佳化,虛擬機器,8C。10萬記錄級別下,用主鍵查詢。類似redis的KV。至少說不輸吧,略勝。如果CPU很多,再最佳化的話,那麼就拉開差距了。更不要說mysql還有memcahce的外掛,可以不用解析SQL了。
而PG和Oracle的多程式能力就更加強了,所以說redis很強,但是其他資料庫也不弱,完全可以承擔壓力。redis的定位是輔助快取,而不是核心唯一。後面有更強大的資料庫抗壓,之所以讓快取分離出去是讓資料庫更加關注業務交易,減輕點負擔。不過如果本身沒有壓力,自己來抗也不是不行。因為沒有壓力說明也不需要快取。
我們想想畢竟沒有哪個股票交易的核心交易買賣是redis吧?
其實單機的redis都已經滿足我們日常的快取要求,至於其他的功能訊息佇列等等,還是交給訊息佇列去做吧。至於鎖,其實還是關係型資料庫更加擅長,到了資料庫還是會有鎖檢測的。(redis是支援分散式鎖的,oracle也支援sharding。但是支援不見得一定要用,支援的好和支援還是有點區別的。現在的車有輔助駕駛或者自動駕駛,但是還是少用)別讓redis的一個執行緒總是處理各式各樣的事件。總被打擾效率也受影響。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/637517/viewspace-2847131/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 如何基於MySQL及Redis搭建統一的KV儲存服務MySqlRedis
- mysql與redis的區別與使用場景MySqlRedis
- MySQL 與 Redis 快取的同步方案MySqlRedis快取
- 探索Redis與MySQL的雙寫問題RedisMySql
- 談談Redis快取中MySQL的資料如何與Redis同步Redis快取MySql
- 實現分散式 kv—1 Standalone KV分散式
- Linux上安裝jdk Tomcat mysql redis等LinuxJDKTomcatMySqlRedis
- MySQL雙機互備熱備自動切換KVMySql
- MySQL與Redis實現二級快取MySqlRedis快取
- 餓了麼分散式KV架構與實踐分散式架構
- 一文徹底搞定Redis與MySQL的資料同步RedisMySql
- 磁碟、mysql、redis、hana 的故事!MySqlRedis
- linux 上 redis的安裝LinuxRedis
- 北京pk賽車帶回血,北京pk10有回血成功的嗎
- 一個全新的 kv 儲存引擎 — LotusDB儲存引擎
- Redis(五)--- Redis的持久化RDB與AOFRedis持久化
- 談談mysql和redis的區別MySqlRedis
- 使用Redis做為MySQL的快取RedisMySql快取
- Erlang vs Elixir by example – kv store
- mysql workbench建表時PK,NN,UQ,BIN,UN,ZF,AI含義說明MySqlAI
- Redis總結(上)Redis
- Redis 學習-上Redis
- Redis的安裝與配置Redis
- Open-Channel SSD平臺上實現高效能KV到底香不香?
- Java Redis系列2 (redis的安裝與使用+redis持久化的實現))JavaRedis持久化
- 跨Mysql、Redis、Mongo的分散式事務MySqlRedisGo分散式
- Linux上的redis的安裝和配置LinuxRedis
- Redis資料庫4:Go與Redis的互動Redis資料庫Go
- filter的pk進行多值查詢操作Filter
- mysql資料同步至redisMySqlRedis
- 【180414】分散式鎖(redis/mysql)分散式RedisMySql
- docker 容器操作、應用部署、mysql,redis,nginx、遷移與備份、DockerfileDockerMySqlRedisNginx
- Redis大全手冊(上)Redis
- Docker上安裝RedisDockerRedis
- vuejs元件庫pk介紹VueJS元件
- Redis 的訂閱與釋出Redis
- Redis 中 Keys 與 Scan 的使用Redis
- 為什麼延遲刪除可以保證MYSQL 與redis的一致性?MySqlRedis