最近閒來無事編寫了一個異步redis客戶端.爲了測試其性能逐對redis和ssdb作了一次性能對比測試.redis
首先介紹下測試環境,i5 4核心 3.6主頻的臺式機器,服務器客戶斷均運行在同一臺機器上.服務器
測試內容是1000條hashtable數據,分別有兩個屬性chianfo和skill,每一個屬性存放100字節左右的字符串.
使用hmget chaid:xx chainfo skills命令向服務器獲取數據.網絡
客戶端跟服務器創建單一連接,初始時先提交1000個請求,而後每收到一個答覆馬上發起一個新的請求.
也就是說相似一個pingpong測試.異步
redis的qps很是驚人,達到了45W/,而ssdb只有2.5W/s.性能
這裏先簡單介紹下ssdb的處理,首先有一個主線程接受戶鏈接,接收客戶端過來的請求,解析出操做以後投遞
給reader線程,由reader線程處理請求並將響應返回給客戶端.在大概分析了各線程的cpu利用率以後,我對
ssdb的源代碼作了一點調整,取消reader線程的工做,將請求直接在主線程中處理並返回響應.測試
修改以後,ssdb的qps達到了5.2W.後來將這個測試的結果跟ssdb的做者交流了一下,得知新版本的ssdb也會作相似調整.線程
這裏不得不讚一下redis的網絡處理部分寫得很是高效.redis的主線程cpu消耗不過50%.而個人客戶端已經到達了80%.
一樣的測試,在修改事後的ssdb上,主線程利用率幾乎到達100%(5.2w qps),個人客戶端在30%左右.字符串