新聞中心

創(chuàng)新互聯(lián)專注于企業(yè)全網(wǎng)整合營(yíng)銷推廣、網(wǎng)站重做改版、寧武網(wǎng)站定制設(shè)計(jì)、自適應(yīng)品牌網(wǎng)站建設(shè)、html5、商城網(wǎng)站定制開(kāi)發(fā)、集團(tuán)公司官網(wǎng)建設(shè)、外貿(mào)網(wǎng)站建設(shè)、高端網(wǎng)站制作、響應(yīng)式網(wǎng)頁(yè)設(shè)計(jì)等建站業(yè)務(wù),價(jià)格優(yōu)惠性價(jià)比高,為寧武等各大城市提供網(wǎng)站開(kāi)發(fā)制作服務(wù)。
Redis 服務(wù)器通過(guò)監(jiān)聽(tīng) TCP 端口的方式來(lái)接受客戶端的連接。當(dāng)一個(gè)連接建立后,Redis 會(huì)自動(dòng)執(zhí)行以下過(guò)程:
- 首先客戶端 socket 被設(shè)置為非阻塞模式,這是因?yàn)?Redis 在網(wǎng)絡(luò)事件處理上采用了非阻塞式 IO(即 IO 多路復(fù)用模型);
- 其次設(shè)置 socket 的 TCP_NODELAY 屬性,從而禁用 Nagle 算法;
- 最后創(chuàng)建一個(gè)可讀的文件事件,用它來(lái)監(jiān)聽(tīng)客戶端 socket 的數(shù)據(jù)發(fā)送。
Redis 使用命令的格式向客戶端輸入數(shù)據(jù),這個(gè)數(shù)據(jù)量是非常小的。當(dāng)向客戶端輸入命令后,我們希望能快速的得到服務(wù)器的應(yīng)答,也就是低延時(shí)性,但如果開(kāi)啟了
Nagle算法就會(huì)出現(xiàn)頻繁延時(shí)的現(xiàn)象,導(dǎo)致用戶體驗(yàn)極差。
TCP_NODELAY 控制是否開(kāi)啟 Nagle 算法,該算法可以提高廣域網(wǎng)傳輸效率,減少分組的報(bào)文個(gè)數(shù),適合傳輸體量較大的數(shù)據(jù)。
Redis IO多路復(fù)用
Redis 的底層是一個(gè)單線程模型,單線程指的是使用一個(gè)線程來(lái)處理所有的網(wǎng)絡(luò)事件請(qǐng)求,這樣就避免了多進(jìn)程或者多線程切換導(dǎo)致的 CPU 消耗,而且也不用考慮各種鎖的問(wèn)題。
Redis 為了充分利用單線程,加快服務(wù)器的處理速度,它采用 IO 多路復(fù)用模型來(lái)處理客戶端與服務(wù)端的連接,這種模型有三種實(shí)現(xiàn)方式,分別是 select、poll、epoll。Redis 正是采用 epoll 的方式來(lái)監(jiān)控多個(gè) IO 事件。當(dāng)客戶端空閑時(shí),線程處于阻塞狀態(tài);當(dāng)一個(gè)或多個(gè) IO 事件觸發(fā)時(shí)(客戶端發(fā)起網(wǎng)路連接請(qǐng)求),線程就會(huì)從阻塞狀態(tài)喚醒,并同時(shí)使用
epoll來(lái)輪詢觸發(fā)事件,并依次提交給線程處理。
注意:“多路”指的是多個(gè)網(wǎng)絡(luò)連接,“復(fù)用”指的是復(fù)用同一個(gè)線程。多路 IO 復(fù)用技術(shù)可以讓單個(gè)線程高效的處理多個(gè)連接請(qǐng)求。
客戶端最大連接數(shù)
在 Redis 配置文件中,有一個(gè)
maxclients的配置項(xiàng),它指定了連接到 Redis 服務(wù)器的最大客戶端數(shù)量。其默認(rèn)值是 10000。配置項(xiàng)如下所示:
127.0.0.1:6379> config get maxclients 1) "maxclients" 2) "10000" #更改最大連接數(shù)量 127.0.0.1:6379> config set maxclients 20000 OK 127.0.0.1:6379> config get maxclients 1) "maxclients" 2) "20000"
常用命令
| 命令 | 說(shuō)明 |
|---|---|
| CLIENT LIST | 以列表的形式返回所有連接到 Redis 服務(wù)器的客戶端。 |
| CLIENT SETNAME | 設(shè)置當(dāng)前連接的名稱。 |
| CLIENT GETNAME | 獲取通過(guò) CLIENT SETNAME 命令設(shè)置的服務(wù)名稱。 |
| CLIENT PAUSE | 掛起客戶端連接,將所有客戶端掛起指定的時(shí)間(以毫秒為計(jì)算)。 |
| CLIENT KILL | 關(guān)閉客戶端連接。 |
| CLIENT ID | 返回當(dāng)前客戶端 ID。 |
| CLIENT REPLY | 控制發(fā)送到當(dāng)前連接的回復(fù),可選值包括 on|off|skip。 |
命令應(yīng)用應(yīng)用
下面看一組簡(jiǎn)單的使用示例,如下所示:
127.0.0.1:6379> CLIENT ID (integer) 2557 127.0.0.1:6379> CLIENT LIST id=2556 addr=127.0.0.1:64684 fd=30 name= age=2422 idle=339 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=0 qbuf-free=0 obl=0 oll=0 omem=0 events=r cmd=client id=2557 addr=127.0.0.1:49502 fd=43 name= age=537 idle=0 flags=N db=0 sub=0 psub=0 multi=-1 qbuf=26 qbuf-free=32742 obl=0 oll=0 omem=0 events=r cmd=client 127.0.0.1:6379> CLIENT REPLY ON OK 127.0.0.1:6379> CLIENT SETNAME "www.biancheng.net" OK 127.0.0.1:6379> CLIENT GETNAME "www.biancheng.net" 127.0.0.1:6379> CLIENT KILL 127.0.0.1:49502 OK
網(wǎng)站名稱:Redis客戶端(client)命令
當(dāng)前鏈接:http://m.5511xx.com/article/dpgsipc.html


咨詢
建站咨詢
