4 回答

TA貢獻1998條經驗 獲得超6個贊
單線程,只能靠單個處理器速度,內存速度,處理器上的緩存速度,總線傳輸速度。余下的是你的網絡IO。但線程高并發完全依賴程序的運行速度。redis這種東西肯定不是但線程的。一個連接就是一個線程,你這樣理解應該不準確。

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

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

TA貢獻1825條經驗 獲得超4個贊
redis為什么會有高并發問題redis的出身決定Redis是一種單線程機制的nosql數據庫,基于key-value,數據可持久化落盤。由于單線程所以redis本身并沒有鎖的概念,多個客戶端連接并不存在競爭關系,但是利用jedis等客戶端對redis進行并發訪問時會出現問題。發生連接超時、數據轉換錯誤、阻塞、客戶端關閉連接等問題,這些問題均是由于客戶端連接混亂造成。同時,單線程的天性決定,高并發對同一個鍵的操作會排隊處理,如果并發量很大,可能造成后來的請求超時。在遠程訪問redis的時候,因為網絡等原因造成高并發訪問延遲返回的問題。解決法在客戶端將連接進行池化,同時對客戶端讀寫Redis操作采用內部鎖synchronized。服務器角度,利用setnx變向實現鎖機制。
- 4 回答
- 0 關注
- 1549 瀏覽
添加回答
舉報