成人无码视频,亚洲精品久久久久av无码,午夜精品久久久久久毛片,亚洲 中文字幕 日韩 无码

資訊專欄INFORMATION COLUMN

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

neu / 2394人閱讀

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

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

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

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

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

#給定‘-q’選項(xiàng)可以讓程序簡(jiǎn)化輸出結(jié)果,給定‘-c 1’選項(xiàng)讓程序只使用一個(gè)客戶端來(lái)進(jìn)行測(cè)試
$ 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個(gè)客戶端來(lái)進(jìn)行性能測(cè)試,但是為了在redis-benchmark和我們自己的客戶端之間進(jìn)行性能對(duì)比,讓redis-benchmark只使用一個(gè)客戶端要比使用多個(gè)客戶端更方一些。

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

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

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

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

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

大部分Redis客戶端庫(kù)都提供了某種級(jí)別的內(nèi)置連接池。以Python的Redis客戶端為例,對(duì)于每個(gè)Redis服務(wù)器,用戶只需要?jiǎng)?chuàng)建一個(gè)redis.Redis()對(duì)象,該對(duì)象就會(huì)按需創(chuàng)建連接、重用已有的連接并關(guān)閉超時(shí)的連接(在使用多個(gè)數(shù)據(jù)庫(kù)的情況下,即使客戶端只連接了一個(gè)Redis服務(wù)器,它也需要為每一個(gè)被使用的數(shù)據(jù)庫(kù)創(chuàng)建一個(gè)連接),并且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來(lái)記錄日志

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

轉(zhuǎn)載請(qǐng)注明本文地址:http://m.hztianpu.com/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)對(duì)系統(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 評(píng)論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)故障對(duì)于有擴(kuò)展平臺(tái)以適應(yīng)更高負(fù)載經(jīng)驗(yàn)的工程師和管理員來(lái)說(shuō),復(fù)制是不可或缺的。 上一篇文章:Python--Redis實(shí)戰(zhàn):第四章:數(shù)據(jù)安全與性能保障:第3節(jié):AOF持久化下一篇文章:Python--Redis實(shí)戰(zhàn):第四章:數(shù)據(jù)安全與性能保障:第5節(jié):處理系統(tǒng)故障 對(duì)于有擴(kuò)展平臺(tái)以適應(yīng)更高...

    fuchenxuan 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

neu

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<