成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Python--Redis實(shí)戰(zhàn):第四章:數(shù)據(jù)安全與性能保障:第8節(jié):關(guān)于性能方面的注意事項(xiàng)

neu / 2350人閱讀

摘要:上一篇文章實(shí)戰(zhàn)第四章數(shù)據(jù)安全與性能保障第節(jié)非事務(wù)型流水線下一篇文章實(shí)戰(zhàn)第五章使用構(gòu)建支持程序第節(jié)使用來記錄日志

上一篇文章:Python--Redis實(shí)戰(zhàn):第四章:數(shù)據(jù)安全與性能保障:第7節(jié):非事務(wù)型流水線
下一篇文章:Python--Redis實(shí)戰(zhàn):第五章:使用Redis構(gòu)建支持程序:第1節(jié):使用Redis來記錄日志

習(xí)慣了關(guān)系數(shù)據(jù)庫的用戶在剛開始使用Redis的時(shí)候,通常會因?yàn)镽edis帶來的上百倍的性能提升而感到欣喜若狂,卻沒有認(rèn)識到Redis性能實(shí)際上還可以進(jìn)一步的提高。雖然上一節(jié)介紹的非事務(wù)型流水線可以盡可能地減少應(yīng)用程序和Redis之間的通信往返次數(shù),但是對于一個已經(jīng)存在的應(yīng)用程序,我們應(yīng)該如何判斷這個程序能否被優(yōu)化呢?我們又應(yīng)該如何對它進(jìn)行優(yōu)化呢?

要對Redis的性能進(jìn)行優(yōu)化,用戶首先需要弄清楚各種類型的Redis命令到底能跑多快,而這一點(diǎn)可以通過調(diào)用Redis附帶的性能測試程序redis-benchmark來得知,下面清單展示了一個相應(yīng)的例子。如果有興趣的話,讀者也可以試著用redis-benchmark來了解Redis在自己服務(wù)器上的各種性能特征:

在裝有英特爾酷睿2雙核2.4GHz處理器的臺式電腦上運(yùn)行redsi-benchmark

#給定‘-q’選項(xiàng)可以讓程序簡化輸出結(jié)果,給定‘-c 1’選項(xiàng)讓程序只使用一個客戶端來進(jìn)行測試
$ redis-benchmark -c 1 -q
PING (inline):34246.57 requests per second
Pind:34843.32 requests per second
MSET (10 keys):24213 08 request per second
SET: 32467.53 request per second
GET: 33112.59 request per second
INCR: 32679.74 request per second
LPUSH: 33333.33 request per second
LPOP: 33670.04 request per second
SADD: 33222.59 request per second
SPOP: 34482.76 request per second
LPUSH (again, in order to bench LRNAGE):33222.59 request per second
LRANGE (first 100 elements):22988.51 request per second
LRANGE (first 300 elements):13888.89 request per second
LRANGE (first 450 elements):11061.95 request per second
LRANGE (first 600 elements):9041.59 request per second

redis-benchmark的運(yùn)行結(jié)果展示了一些常用Redis命令在1秒內(nèi)可以執(zhí)行的此時(shí)。如果用戶在不給定任何參數(shù)的情況下運(yùn)行redis-benchmark,那么redis-benchmark將使用50個客戶端來進(jìn)行性能測試,但是為了在redis-benchmark和我們自己的客戶端之間進(jìn)行性能對比,讓redis-benchmark只使用一個客戶端要比使用多個客戶端更方一些。

在考察redis-benchmark的輸出結(jié)果時(shí),切記不要將輸出結(jié)果看做是用于程序的實(shí)際性能,這是因?yàn)閞edis-benchmark不會處理執(zhí)行命令所獲得的命令回復(fù),所以它節(jié)約了大量用于對命令回復(fù)進(jìn)行語法分析的時(shí)間。在一般情況下,對于只使用單個客戶端的redis-benchmark來說,根據(jù)被調(diào)用命令的復(fù)雜度,一個不使用流水線的Python客戶端的性能大概只有redis-benchmark所示性能的50%~60%。

另一方面,如果你發(fā)現(xiàn)自己客戶端的性能只有redis-benchmark所示性能的25%~30%,或者客戶端向你返回了”Cannot assign requested address“(無法分配指定的地址)錯誤,那么你可能是不小心在每次發(fā)送命令時(shí)都創(chuàng)建了新的連接。

下表列出了只使用單個客戶端的redis-benchmark與Python客戶端之間的性能對比結(jié)果,并介紹了一些常見的造成客戶端性能底下或者出錯的原因:

比較了Redis在通常情況下的性能表現(xiàn)以及redis-benchmark使用單客戶端進(jìn)行測試時(shí)的結(jié)果,并說明了一些可能引起性能問題的原因
性能或者錯誤 可能的原因 解決方法
單個客戶端的性能達(dá)到redis-benchmark的50%~60% 這是不使用流水線的預(yù)期性能無
單個客戶端的性能達(dá)到redis-benchmark的25%~30% 對于每個命令或者每組命令都創(chuàng)建了新的連接 重用已有的Redis連接
客戶端返回錯誤:”Cannot assign requested address“(無法分配指定的地址) 對于每個命令或者每組命令都創(chuàng)建了新的連接 重用已有的Redis連接

盡管上表列出的性能問題以及問題的解決方法都非常簡短,但絕大部分常見的性能問題都是由表格中列出的原因引起的(另一個引起性能問題的原因是以不正確的方式使用Redis的數(shù)據(jù)結(jié)構(gòu))。如果讀者遇到了難以解決的性能問題,或者遇到上表沒有介紹的性能問題,那么讀者可以考慮通過1.4節(jié)介紹的方法來尋求幫助。

大部分Redis客戶端庫都提供了某種級別的內(nèi)置連接池。以Python的Redis客戶端為例,對于每個Redis服務(wù)器,用戶只需要創(chuàng)建一個redis.Redis()對象,該對象就會按需創(chuàng)建連接、重用已有的連接并關(guān)閉超時(shí)的連接(在使用多個數(shù)據(jù)庫的情況下,即使客戶端只連接了一個Redis服務(wù)器,它也需要為每一個被使用的數(shù)據(jù)庫創(chuàng)建一個連接),并且Python客戶端的連接池還可以安全地應(yīng)用于多線程環(huán)境和多進(jìn)程環(huán)境。

上一篇文章:Python--Redis實(shí)戰(zhàn):第四章:數(shù)據(jù)安全與性能保障:第7節(jié):非事務(wù)型流水線
下一篇文章:Python--Redis實(shí)戰(zhàn):第五章:使用Redis構(gòu)建支持程序:第1節(jié):使用Redis來記錄日志

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/42639.html

相關(guān)文章

  • Python--Redis實(shí)戰(zhàn)四章數(shù)據(jù)安全性能保障1節(jié):持久化選項(xiàng)

    摘要:為了讓讀者做好使用構(gòu)建真實(shí)軟件的準(zhǔn)備,本章將展示維護(hù)數(shù)據(jù)安全以及應(yīng)對系統(tǒng)故障的方法。上一篇文章實(shí)戰(zhàn)第三章命令第七節(jié)其他命令下一篇文章實(shí)戰(zhàn)第四章數(shù)據(jù)安全與性能保障第節(jié)快照持久化 上一篇文章:Python--Redis實(shí)戰(zhàn):第三章:Redis命令:第七節(jié):其他命令下一篇文章:Python--Redis實(shí)戰(zhàn):第四章:數(shù)據(jù)安全與性能保障:第2節(jié):快照持久化 前面的幾章介紹了各式各樣的Redi...

    derek_334892 評論0 收藏0
  • Python--Redis實(shí)戰(zhàn)四章數(shù)據(jù)安全性能保障4節(jié):復(fù)制

    摘要:上一篇文章實(shí)戰(zhàn)第四章數(shù)據(jù)安全與性能保障第節(jié)持久化下一篇文章實(shí)戰(zhàn)第四章數(shù)據(jù)安全與性能保障第節(jié)處理系統(tǒng)故障對于有擴(kuò)展平臺以適應(yīng)更高負(fù)載經(jīng)驗(yàn)的工程師和管理員來說,復(fù)制是不可或缺的。 上一篇文章:Python--Redis實(shí)戰(zhàn):第四章:數(shù)據(jù)安全與性能保障:第3節(jié):AOF持久化下一篇文章:Python--Redis實(shí)戰(zhàn):第四章:數(shù)據(jù)安全與性能保障:第5節(jié):處理系統(tǒng)故障 對于有擴(kuò)展平臺以適應(yīng)更高...

    fuchenxuan 評論0 收藏0

發(fā)表評論

0條評論

neu

|高級講師

TA的文章

閱讀更多
最新活動
閱讀需要支付1元查看
<