基于Java环境下的Redis发布订阅的设计与实现.docx

基于Java环境下的Redis发布订阅的设计与实现.docx

  1. 1、本文档共6页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

?

?

基于Java环境下的Redis发布订阅的设计与实现

?

?

玉绍康关世杰苏一博

摘??要:随着科学技术的发展,实时聊天系统、微博以及在一些读写分离的分布式架构等应用越来越多,Redis的发布订阅便可以实现这些功能。针对Redis在分布式系统中作为数据通信中间件的问题,本文主要研究了Redis的发布订阅功能。首先简要介绍了Redis的发布订阅功能和机制,然后在基于Java环境下实现了通过Redis的发布订阅功能进行客户机之间的数据通信。

关键词:Redis?数据通信中间件?发布订阅?Java

中图分类号:TP311?????????????????文献标识码:A????????????文章编号:1674-098X(2019)05(b)-0003-02

1?Redis的发布订阅功能

Redis可以作为数据库、缓存服务或消息服务使用,其中内存数据库功能应用最为广泛[1]。但Redis还有许多功能应用也很广泛,例如Redis可作为一种数据通信中间件,即发布订阅功能,应用于实时聊天系统、微博及分布式架构等。

在Redis客户端键入SUBSCRIBE的时候,会建立一个客户端与一个频道的订阅关系,并将所有的频道和客户端的订阅关系都保存在一个叫puhsub_channels的字典中。这个字典的key是某个频道,而values则是一个链表,记录了所有订阅这个频道的客户端[2]。利用Java实现Redis的发布订阅功能可以更好地开发需要通信中间件的Java项目。

2?使用Java实现Redis

Redis是一种缓存数据库,属于客户端和服务端的结构。Java中通常使用Jedis(客户端)去操作Redis(服务端),首先两者之间要建立连接,在Jedis中,采用Jedis连接池(Jedispool)建立连接,随时可以从池中取出连接使用[3]。在此基础上,可设计实现Redis发布订阅功能过程如图1所示。

该过程可具体描述如下:

(1)先建立发布者Publisher类,通过频道(mychannel)发布消息。

(2)由于订阅操作机制是线程阻塞的,需要另外开启一个线程(Subscribr类)来专门处理订阅消息和处理接收消息。

(3)发布者和订阅者都通过JedisPool中的getResource()方法从Jedis连接池中取出一个连接,连接Redis服务端。

(4)Jedis中的定义JedisPubSub抽象类可以为Redis提供订阅和取消订阅的功能。此時需要建立消息监听类,这个消息监听类需要继承JedisPubSub类,并重写它的三个方法。当收到消息时,会调用onMessage方法;当订阅频道时,会调用onSubscribe方法;当取消订阅时,会调用onUnsubscribe方法。

3?测试结果

用Java代码设计通信测试类来启动订阅者线程和发布者线程。与此同时订阅者会调用消息监听类中onSubscribe方法实现订阅频道mychannel,订阅结束订阅线程阻塞,并监听此频道的消息。订阅过程如图2所示,可以看出订阅频道成功。

订阅成功后,用键盘输入要发布的消息,发布者线程中的Publisher接收输入的消息后,将消息发布到mychannel中,此时订阅mychannel的订阅者会收到消息并打印,结果如图3所示,可以看出发布端成功发布消息,订阅端已经成功收到消息。

取消订阅需要输入quit命令时,即停止发布消息,同时订阅者调用onUnsubscribe方法取消订阅,结果如图4所示,此时取消订阅成功。

综上所述,本文设计的在Java环境下基于Redis的发布订阅功能有效。

4?结语

Redis技术作为当今应用广泛的技术之一,在各个领域的应用开发中有着不可替代的作用。本文主要研究了Redis的发布订阅功能,在基于Java环境中实现了对频道的订阅、发布、监听、接收功能,通过检测实验的结果成功订阅频道并接收到频道中发布的消息。本文的研究和测试对分布式系统的通信以及信息交互具有重要的意义。

参考文献

[1]王嫣如.Redis消息推送机制应用技术研究[J].科技广场,2016(8):41-44.

[2]黄健宏.Redis设计与实现[M].北京:机械工业出版社,2014.

[3]https:///xinde123/p/8489054.html

科技创新导报2019年14期

科技创新导报的其它文章

环境工程中污水治理的现状及解决措施

专利视角下工业机器人领域的技术机会分析

青少年探究危险小天体预警防御小卫星设计

医院资产维护信息平台设计及应用研究

路径测绘一体化技术在电缆故障中的应用

新型科氏加速度演示仪的设计

?

-全文完-

文档评论(0)

135****7186 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档