4 回答

TA貢獻(xiàn)1998條經(jīng)驗(yàn) 獲得超6個(gè)贊
單線程,只能靠單個(gè)處理器速度,內(nèi)存速度,處理器上的緩存速度,總線傳輸速度。余下的是你的網(wǎng)絡(luò)IO。但線程高并發(fā)完全依賴程序的運(yùn)行速度。redis這種東西肯定不是但線程的。一個(gè)連接就是一個(gè)線程,你這樣理解應(yīng)該不準(zhǔn)確。

TA貢獻(xiàn)1789條經(jīng)驗(yàn) 獲得超10個(gè)贊
redis是C語言寫的,C是只能單線程的。
但是并不代表單線程不能夠做到多線程的效率和工作。
多線程是并發(fā)的體現(xiàn),前提是有多處理器,就一定能并發(fā),
匯編都可以寫并發(fā)程序,所以也就能多線程,單線程的C肯定是可以的。
在《redis深度歷險(xiǎn)》提到,nodejs,redis,nginx這樣的高性能服務(wù)器,可以通過非阻塞I/O實(shí)現(xiàn),
具體內(nèi)容可以看電子版的,或者去圖書館翻翻看

TA貢獻(xiàn)1773條經(jīng)驗(yàn) 獲得超3個(gè)贊
MongoDB不多說,不是一個(gè)類型的東西,Redis相對(duì)Memcached來說功能和特性上的優(yōu)勢已經(jīng)很明顯了。而對(duì)于性能,Redis作者的說法是平均到單個(gè)核上的性能,在單條數(shù)據(jù)不大的情況下Redis更好。為什么這么說呢,理由就是Redis是單線程運(yùn)行的。

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊
redis為什么會(huì)有高并發(fā)問題redis的出身決定Redis是一種單線程機(jī)制的nosql數(shù)據(jù)庫,基于key-value,數(shù)據(jù)可持久化落盤。由于單線程所以redis本身并沒有鎖的概念,多個(gè)客戶端連接并不存在競爭關(guān)系,但是利用jedis等客戶端對(duì)redis進(jìn)行并發(fā)訪問時(shí)會(huì)出現(xiàn)問題。發(fā)生連接超時(shí)、數(shù)據(jù)轉(zhuǎn)換錯(cuò)誤、阻塞、客戶端關(guān)閉連接等問題,這些問題均是由于客戶端連接混亂造成。同時(shí),單線程的天性決定,高并發(fā)對(duì)同一個(gè)鍵的操作會(huì)排隊(duì)處理,如果并發(fā)量很大,可能造成后來的請(qǐng)求超時(shí)。在遠(yuǎn)程訪問redis的時(shí)候,因?yàn)榫W(wǎng)絡(luò)等原因造成高并發(fā)訪問延遲返回的問題。解決法在客戶端將連接進(jìn)行池化,同時(shí)對(duì)客戶端讀寫Redis操作采用內(nèi)部鎖synchronized。服務(wù)器角度,利用setnx變向?qū)崿F(xiàn)鎖機(jī)制。
- 4 回答
- 0 關(guān)注
- 1563 瀏覽
添加回答
舉報(bào)