日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Node.js~ioredis处理耗时请求时连接数瀑增

發(fā)布時間:2024/4/13 编程问答 24 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Node.js~ioredis处理耗时请求时连接数瀑增 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

關(guān)于redis連接數(shù)過高的解釋

對于node.js開發(fā)環(huán)境里,使用傳統(tǒng)的redis或者使用ioredis都是不錯的選擇,而在處理大數(shù)據(jù)請求程中,偶爾出現(xiàn)了連接池( redis服務(wù)端的最大可用連接數(shù),默認(rèn)為1萬)不夠用的情況,一般的提示如下:

It was not possible to connect to the redis server(s); to create a disconnected multiplexer, disable AbortOnConnectFail

在redis-cli上輸入info命令也可以進(jìn)行查看

?redis-server.conf里配置了它默認(rèn)的最大連接數(shù)

maxclients 10000

產(chǎn)生它的原因有幾個:

  • 單個請求使用結(jié)果后,沒有釋放,client.end()沒有使用,這主要是redis組件
  • 而使用了ioredis組件后,需要redis會自動釋放,但時機(jī)也是http請求結(jié)束之后才執(zhí)行,所以對于長時間沒有響應(yīng)的請求,也會出現(xiàn)占用redis線程的問題,解決方法手動使用redis.quit()即可
  • 單個請求時間過長,導(dǎo)師redis連接一直被一個請求占用,而在請求數(shù)過多時,這種現(xiàn)象就會引用連接池不夠用
  • 多線程環(huán)境下(非node.js),使用了實(shí)例模塊,而沒有使用單例模式,因?yàn)楹芏鄏edis驅(qū)動是支持多路復(fù)用的
  • 大叔建議的作法:

    減少單次請求的響應(yīng)時間,建議把redis從一個大請求中拿出來,因?yàn)榧價(jià)edis還是很快的

    正確使用redis組件,用完就關(guān)了

    正確理解多線程與socket連接,要知道socket連接直接影響你的服務(wù)器CPU性能

    ioredis代碼實(shí)例

    ioredis是個好東西,它完全支持了redis的cluster,sentinal等新技術(shù)

    new Redis() // Connect to 127.0.0.1:6379 new Redis(6380) // 127.0.0.1:6380 new Redis(6379, '192.168.1.1') // 192.168.1.1:6379 new Redis('/tmp/redis.sock') new Redis({port: 6379, // Redis porthost: '127.0.0.1', // Redis hostfamily: 4, // 4 (IPv4) or 6 (IPv6)password: 'auth',db: 0 })

    同時支持標(biāo)準(zhǔn)的字符連接串

    // Connect to 127.0.0.1:6380, db 4, using password "authpassword": new Redis('redis://:authpassword@127.0.0.1:6380/4')

    支持發(fā)布與訂閱,它會存儲在進(jìn)程里,它不會被持久化,所有會有消息丟失的情況

    var Redis = require('ioredis'); var redis = new Redis(); var pub = new Redis(); redis.subscribe('news', 'music', function (err, count) {// Now we are subscribed to both the 'news' and 'music' channels.// `count` represents the number of channels we are currently subscribed to. pub.publish('news', 'Hello world!');pub.publish('music', 'Hello again!'); });

    好了,下次我們有時間去講講ioredis的具體操作!

    感謝各位的閱讀!

    本文轉(zhuǎn)自博客園張占嶺(倉儲大叔)的博客,原文鏈接:Node.js~ioredis處理耗時請求時連接數(shù)瀑增,如需轉(zhuǎn)載請自行聯(lián)系原博主。

    總結(jié)

    以上是生活随笔為你收集整理的Node.js~ioredis处理耗时请求时连接数瀑增的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。