mysql & redis 性能測試

測試環境

機器:
圖片描述
Redis: Redis server v=3.0.5 sha=00000000:0 malloc=libc bits=64 build=3145a5e1a81fd3f7
Mysql: Server version: 5.7.9 Homebrew
測試工具:perf4j-zh 地址:https://github.com/WangJunTYTL/perf4j-zhmysql

提示:如下測試結果均在單線程環境下運行git

redis

get
圖片描述github

set
圖片描述
set get 同時執行
圖片描述redis

mysql

select
圖片描述
update
圖片描述sql

測試報告

經過對redis的set、get命令測試觀察,redis的讀寫性能在單線程下能夠達到每秒2W左右
經過對mysql的select和insert、delete語句測試,mysql的讀性能可達到6000每秒,寫性能可到達3000每秒,讀性能基本是寫性能的2倍。設計模式

redis性能分析

redis的讀寫爲何這麼快,我的以爲主要體如今redis的設計上,redis是單進程單線程模式,採用隊列模式將併發訪問轉爲串行訪問,而這種模式不但沒有影響它的性能,反而由於這樣設計而變得更快速,這要結合redis的使用場景。在這種簡單的設計模式下,redis自己並無競爭沒有鎖的概念。估計做者也是結合了redis的使用場景才這麼幹的,由於畢竟redis主要操做內存數據,並且定位數據時採用hash定位,它在寫入和查詢時因此基本不消耗什麼性能,另外單個命令基本都是瞬間完成,應該不會出現因採用串行化執行而出現阻塞的狀況,即應該不會出現某條命令執行時間過長而阻塞後面的命令執行的狀況,這也是爲何不建議在Redis的一個key上存取太長數據的緣由。這種簡單的設計模式,不只提升了redis的性能,並且在實現上代碼也會少不少,實現起來也會變得簡單起來。併發

相關文章
相關標籤/搜索