亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Java環(huán)境下的Redis發(fā)布訂閱的設(shè)計(jì)與實(shí)現(xiàn)

        2019-10-20 15:46:04玉紹康關(guān)世杰蘇一博
        科技創(chuàng)新導(dǎo)報(bào) 2019年14期

        玉紹康 關(guān)世杰 蘇一博

        摘? ?要:隨著科學(xué)技術(shù)的發(fā)展,實(shí)時(shí)聊天系統(tǒng)、微博以及在一些讀寫分離的分布式架構(gòu)等應(yīng)用越來越多,Redis的發(fā)布訂閱便可以實(shí)現(xiàn)這些功能。針對(duì)Redis在分布式系統(tǒng)中作為數(shù)據(jù)通信中間件的問題,本文主要研究了Redis的發(fā)布訂閱功能。首先簡(jiǎn)要介紹了Redis的發(fā)布訂閱功能和機(jī)制,然后在基于Java環(huán)境下實(shí)現(xiàn)了通過Redis的發(fā)布訂閱功能進(jìn)行客戶機(jī)之間的數(shù)據(jù)通信。

        關(guān)鍵詞:Redis? 數(shù)據(jù)通信中間件? 發(fā)布訂閱? Java

        中圖分類號(hào):TP311? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A? ? ? ? ? ? ? ? ? ? ? ?文章編號(hào):1674-098X(2019)05(b)-0003-02

        1? Redis的發(fā)布訂閱功能

        Redis可以作為數(shù)據(jù)庫(kù)、緩存服務(wù)或消息服務(wù)使用,其中內(nèi)存數(shù)據(jù)庫(kù)功能應(yīng)用最為廣泛[1]。但Redis還有許多功能應(yīng)用也很廣泛,例如Redis可作為一種數(shù)據(jù)通信中間件,即發(fā)布訂閱功能,應(yīng)用于實(shí)時(shí)聊天系統(tǒng)、微博及分布式架構(gòu)等。

        在Redis客戶端鍵入SUBSCRIBE的時(shí)候,會(huì)建立一個(gè)客戶端與一個(gè)頻道的訂閱關(guān)系,并將所有的頻道和客戶端的訂閱關(guān)系都保存在一個(gè)叫puhsub_channels的字典中。這個(gè)字典的key是某個(gè)頻道,而values則是一個(gè)鏈表,記錄了所有訂閱這個(gè)頻道的客戶端[2]。利用Java實(shí)現(xiàn)Redis的發(fā)布訂閱功能可以更好地開發(fā)需要通信中間件的Java項(xiàng)目。

        2? 使用Java實(shí)現(xiàn)Redis

        Redis是一種緩存數(shù)據(jù)庫(kù),屬于客戶端和服務(wù)端的結(jié)構(gòu)。Java中通常使用 Jedis(客戶端)去操作Redis(服務(wù)端),首先兩者之間要建立連接,在Jedis中,采用 Jedis連接池(Jedispool)建立連接,隨時(shí)可以從池中取出連接使用[3]。在此基礎(chǔ)上,可設(shè)計(jì)實(shí)現(xiàn)Redis發(fā)布訂閱功能過程如圖1所示。

        該過程可具體描述如下:

        (1)先建立發(fā)布者Publisher類,通過頻道(mychannel)發(fā)布消息。

        (2)由于訂閱操作機(jī)制是線程阻塞的,需要另外開啟一個(gè)線程(Subscribr類)來專門處理訂閱消息和處理接收消息。

        (3)發(fā)布者和訂閱者都通過JedisPool中的getResource()方法從Jedis連接池中取出一個(gè)連接,連接Redis服務(wù)端。

        (4)Jedis中的定義JedisPubSub抽象類可以為Redis提供訂閱和取消訂閱的功能。此時(shí)需要建立消息監(jiān)聽類,這個(gè)消息監(jiān)聽類需要繼承JedisPubSub類,并重寫它的三個(gè)方法。當(dāng)收到消息時(shí),會(huì)調(diào)用onMessage方法;當(dāng)訂閱頻道時(shí),會(huì)調(diào)用onSubscribe方法;當(dāng)取消訂閱時(shí),會(huì)調(diào)用onUnsubscribe方法。

        3? 測(cè)試結(jié)果

        用Java代碼設(shè)計(jì)通信測(cè)試類來啟動(dòng)訂閱者線程和發(fā)布者線程。與此同時(shí)訂閱者會(huì)調(diào)用消息監(jiān)聽類中onSubscribe方法實(shí)現(xiàn)訂閱頻道m(xù)ychannel,訂閱結(jié)束訂閱線程阻塞,并監(jiān)聽此頻道的消息。訂閱過程如圖2所示,可以看出訂閱頻道成功。

        訂閱成功后,用鍵盤輸入要發(fā)布的消息,發(fā)布者線程中的Publisher接收輸入的消息后,將消息發(fā)布到mychannel中,此時(shí)訂閱mychannel的訂閱者會(huì)收到消息并打印,結(jié)果如圖3所示,可以看出發(fā)布端成功發(fā)布消息,訂閱端已經(jīng)成功收到消息。

        取消訂閱需要輸入quit命令時(shí),即停止發(fā)布消息,同時(shí)訂閱者調(diào)用onUnsubscribe方法取消訂閱,結(jié)果如圖4所示,此時(shí)取消訂閱成功。

        綜上所述,本文設(shè)計(jì)的在Java環(huán)境下基于Redis的發(fā)布訂閱功能有效。

        4? 結(jié)語(yǔ)

        Redis技術(shù)作為當(dāng)今應(yīng)用廣泛的技術(shù)之一,在各個(gè)領(lǐng)域的應(yīng)用開發(fā)中有著不可替代的作用。本文主要研究了Redis的發(fā)布訂閱功能,在基于Java環(huán)境中實(shí)現(xiàn)了對(duì)頻道的訂閱、發(fā)布、監(jiān)聽、接收功能,通過檢測(cè)實(shí)驗(yàn)的結(jié)果成功訂閱頻道并接收到頻道中發(fā)布的消息。本文的研究和測(cè)試對(duì)分布式系統(tǒng)的通信以及信息交互具有重要的意義 。

        參考文獻(xiàn)

        [1] 王嫣如.Redis消息推送機(jī)制應(yīng)用技術(shù)研究[J].科技廣場(chǎng),2016(8):41-44.

        [2] 黃健宏.Redis設(shè)計(jì)與實(shí)現(xiàn)[M].北京:機(jī)械工業(yè)出版社,2014.

        [3] https://www.cnblogs.com/xinde123/p/8489054.html

        av深夜福利在线| 国产男女免费完整视频| 欧美亚洲日本国产综合在线| 国产亚洲精品成人无码精品网站| 女优av福利在线观看| 国产在线一区二区av| 国产超碰人人做人人爽av大片 | 中文字幕在线亚洲日韩6页手机版| 厨房玩丰满人妻hd完整版视频| 精品少妇一区一区三区| 日本一区二区三区免费| 精品亚洲成av人在线观看| 亚洲色丰满少妇高潮18p| 久久精品国产亚洲5555| 久久网站在线免费观看| 欧美乱妇高清无乱码免费| 三男一女吃奶添下面| 妺妺窝人体色www在线直播| 国产精品区二区东京在线| 国产精品亚洲а∨无码播放| 人禽伦免费交视频播放| 国产精品嫩草影院AV| 超高清丝袜美腿视频在线| 亚洲中文字幕精品视频| 国产精品亚洲а∨天堂2021| 岛国av无码免费无禁网站下载| 久久午夜伦鲁鲁片免费| 日本中文一区二区在线| 我把护士日出水了视频90分钟| 日本午夜福利| 蜜桃色av一区二区三区麻豆| 免费a级毛片又大又粗又黑| 亚洲av综合av国产av| 国产在视频线精品视频二代 | 亚洲性av少妇中文字幕| 免费无码不卡视频在线观看| 亚洲美国产亚洲av| 亚洲中文字幕乱码一二三区| 午夜一区二区三区观看| 久久综合狠狠综合久久| 国产视频在线一区二区三区四区|