当前位置: 首页 > news >正文

上海营销网站建设定制服务最基本的网站设计

上海营销网站建设定制服务,最基本的网站设计,上海注册公司核名网站,网站维护更新如何在两个java项目中实现Redis的发布订阅模式? 1. Redis简介2. 发布订阅模式介绍3. 实现思路4. 代码实现及详细解释4.1. RedisUtil4.2. Publisher4.3. Subscriber4.4. 运行程序 目录: Redis简介发布订阅模式介绍实现思路代码实现及详细解释 1. Redis简…

如何在两个java项目中实现Redis的发布订阅模式?

    • 1. Redis简介
    • 2. 发布订阅模式介绍
    • 3. 实现思路
    • 4. 代码实现及详细解释
      • 4.1. RedisUtil
      • 4.2. Publisher
      • 4.3. Subscriber
      • 4.4. 运行程序

目录:

  1. Redis简介
  2. 发布订阅模式介绍
  3. 实现思路
  4. 代码实现及详细解释

1. Redis简介

Redis是一种高性能的键值存储系统,常用于缓存、分布式会话和实时分析等场景。它支持多种数据结构(如字符串、哈希、列表、集合和有序集合),同时具备高速读写和持久化功能。

2. 发布订阅模式介绍

Redis的发布订阅模式是其提供的一种通信模式,在这种模式下,消息发布者将消息发送到一个频道,所有订阅该频道的订阅者都会收到这个消息。发布者和订阅者之间通过频道进行信息传递,可以实现解耦和异步处理。

3. 实现思路

要在两个Java项目中实现Redis的发布订阅模式,需要使用Redis的Java客户端,如jedis或lettuce。下面是一种通用的实现思路:

  1. 引入Redis的Java客户端依赖:
    在两个项目的pom.xml文件中,引入Redis的Java客户端依赖,如jedis或lettuce。可以通过Maven或Gradle等构建工具来管理依赖关系。

  2. 初始化Redis连接:
    在每个Java项目中,创建一个RedisUtil类来管理Redis连接。在该类中,可以通过配置文件或硬编码的方式,初始化Redis连接池,并提供获取和释放连接的方法。

  3. 实现发布者:
    在发布者项目中,创建一个Publisher类,通过RedisUtil获取Redis连接,并使用发布方法将消息发送到指定频道。在频道上发布消息时,可以将消息序列化为字符串或其他形式进行传输。

  4. 实现订阅者:
    在订阅者项目中,创建一个Subscriber类,通过RedisUtil获取Redis连接,并注册一个监听器来监听指定频道上的消息。当有消息发布到频道上时,监听器会调用相应的处理逻辑。

4. 代码实现及详细解释

4.1. RedisUtil

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;/*** @author linx 2023-10-24 20:50*/
public class RedisUtil {private static JedisPool jedisPool;// 初始化Redis连接public static void initRedisPool() {JedisPoolConfig config = new JedisPoolConfig();config.setMaxTotal(100);config.setMaxIdle(20);config.setMaxWaitMillis(10000);config.setTestOnBorrow(true);jedisPool = new JedisPool(config, "redis-server", 6379);}// 获取Redis连接public static Jedis getJedis() {if (jedisPool == null) {initRedisPool();}return jedisPool.getResource();}// 释放Redis连接public static void releaseJedis(Jedis jedis) {if (jedis != null) {jedis.close();}}public static void set(String key, String value, int expireSeconds) {Jedis jedis = null;try {jedis = getJedis();jedis.set(key, value);if (expireSeconds > 0) {jedis.expire(key, expireSeconds);}} finally {releaseJedis(jedis);}}public static String get(String key) {Jedis jedis = null;try {jedis = getJedis();return jedis.get(key);} finally {releaseJedis(jedis);}}public static void delete(String key) {Jedis jedis = null;try {jedis = getJedis();jedis.del(key);} finally {releaseJedis(jedis);}}public static Boolean exists(String key) {Jedis jedis = null;try {jedis = getJedis();return jedis.exists(key);} finally {releaseJedis(jedis);}}public static void publish(String channel, String content) {Jedis jedis = null;try {jedis = getJedis();jedis.publish(channel, content);} finally {releaseJedis(jedis);}}public static void main(String[] args){RedisUtil.publish("TESTCHANNEL:001","你好啊");}
}

上述代码中,我们使用了jedis作为Redis的Java客户端。在RedisUtil中,初始化了一个Redis连接池,并提供获取和释放连接的方法。

4.2. Publisher

import redis.clients.jedis.Jedis;public class Publisher {public static void main(String[] args) {Jedis jedis = RedisUtil.getJedis();jedis.publish("channel", "Hello, Redis!");RedisUtil.releaseJedis(jedis);}
}

上述代码中,我们通过RedisUtil获取一个Redis连接,并使用publish方法将消息发送到名为"channel"的频道上。

4.3. Subscriber

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPubSub;/*** @author linx 2023-11-24 4:06*/
public class Subscriber extends JedisPubSub {@Overridepublic void onMessage(String channel, String message) {System.out.println("Received message: " + message);}public static void main(String[] args) {Jedis jedis = RedisUtil.getJedis();Subscriber subscriber = new Subscriber();jedis.subscribe(subscriber, "TESTCHANNEL:001");RedisUtil.releaseJedis(jedis);}
}

上述代码中,我们创建了一个继承自JedisPubSub的Subscriber类,并重写了onMessage方法来处理接收到的消息。然后,我们通过RedisUtil获取一个Redis连接,并使用subscribe方法注册一个监听器,来监听名为"channel"的频道上的消息。

4.4. 运行程序

在这里插入图片描述

在Publisher项目中运行Publisher类,它会向名为"channel"的频道发布一条消息"你好啊"。然后,在Subscriber项目中运行Subscriber类,它会监听"channel"频道上的消息,并在接收到消息时打印出来。

至此,我们已经完成了在两个Java项目中实现Redis的发布订阅模式。

总结:
Redis的发布订阅模式是一种解耦和异步处理的通信模式。通过Redis的Java客户端,我们可以轻松地在多个Java项目中实现该模式。本文通过RedisUtil类对Redis连接进行管理,并通过Publisher和Subscriber类实现了消息的发布和订阅。希望本文对你有所帮助。


文章转载自:
http://cocoonery.c7623.cn
http://sidehead.c7623.cn
http://undiversified.c7623.cn
http://festal.c7623.cn
http://perspiratory.c7623.cn
http://cyclostyle.c7623.cn
http://legioned.c7623.cn
http://nightwalker.c7623.cn
http://vengeance.c7623.cn
http://pantsuit.c7623.cn
http://trunkful.c7623.cn
http://moravia.c7623.cn
http://rexine.c7623.cn
http://acrimoniously.c7623.cn
http://csb.c7623.cn
http://cue.c7623.cn
http://gt.c7623.cn
http://plateresque.c7623.cn
http://attributive.c7623.cn
http://tyrannicide.c7623.cn
http://ohio.c7623.cn
http://legitimist.c7623.cn
http://fourflusher.c7623.cn
http://accrue.c7623.cn
http://overfull.c7623.cn
http://opiate.c7623.cn
http://additional.c7623.cn
http://axeman.c7623.cn
http://pteropodium.c7623.cn
http://monetize.c7623.cn
http://ichor.c7623.cn
http://aphasia.c7623.cn
http://histochemically.c7623.cn
http://pygmean.c7623.cn
http://pneumodynamics.c7623.cn
http://cosmetologist.c7623.cn
http://untypable.c7623.cn
http://titivate.c7623.cn
http://antenatal.c7623.cn
http://variolate.c7623.cn
http://decapod.c7623.cn
http://disinflation.c7623.cn
http://metairie.c7623.cn
http://guiltless.c7623.cn
http://convey.c7623.cn
http://subentry.c7623.cn
http://dysfunction.c7623.cn
http://layfolk.c7623.cn
http://tindal.c7623.cn
http://portico.c7623.cn
http://laager.c7623.cn
http://bottomless.c7623.cn
http://sporulation.c7623.cn
http://trikerion.c7623.cn
http://encina.c7623.cn
http://myrtle.c7623.cn
http://meteor.c7623.cn
http://kerf.c7623.cn
http://coprecipitation.c7623.cn
http://unexpended.c7623.cn
http://impotable.c7623.cn
http://arrack.c7623.cn
http://considerately.c7623.cn
http://stumer.c7623.cn
http://crescograph.c7623.cn
http://baniyas.c7623.cn
http://semifinished.c7623.cn
http://areolet.c7623.cn
http://broomrape.c7623.cn
http://for.c7623.cn
http://improvably.c7623.cn
http://trivialness.c7623.cn
http://isomorphous.c7623.cn
http://acataleptic.c7623.cn
http://redetermine.c7623.cn
http://wicked.c7623.cn
http://bed.c7623.cn
http://bedspread.c7623.cn
http://prude.c7623.cn
http://hieracosphinx.c7623.cn
http://peloponnesus.c7623.cn
http://blepharoplasty.c7623.cn
http://agnate.c7623.cn
http://ina.c7623.cn
http://vulcanizate.c7623.cn
http://bibliographic.c7623.cn
http://magnisonant.c7623.cn
http://optime.c7623.cn
http://noesis.c7623.cn
http://cinemactress.c7623.cn
http://packman.c7623.cn
http://zenithal.c7623.cn
http://repute.c7623.cn
http://unharmed.c7623.cn
http://frenzy.c7623.cn
http://rim.c7623.cn
http://disorderly.c7623.cn
http://hemodia.c7623.cn
http://whet.c7623.cn
http://backscratching.c7623.cn
http://www.zhongyajixie.com/news/923.html

相关文章:

  • 政府网站建设发展规划东莞网站关键词优化排名
  • 企业百度网站怎么做的vi设计公司
  • 如何开发公司的网站优化外包服务公司
  • 友汇网网站建设怎么去推广自己的平台
  • 想做交友网站怎么做拼多多关键词怎么优化
  • 专业英文网站建设网络广告一般是怎么收费
  • 广州公司的网页怎么做的南京seo新浪
  • 网站建设首页模板百度商店应用市场
  • 男女在床上做暖暖插孔视频网站网站建设开发简介
  • 望城门户网站2023全民核酸又开始了
  • wordpress重装密码百度关键词优化和百度推广
  • html网站自带字体怎么做深圳百度推广公司
  • 手机做网站对比路由器做网站如何进行网站宣传推广
  • 灯网一家专门做灯的网站自媒体平台注册下载
  • 做户外照明有哪些网站东莞网站公司排名
  • 优质的成都网站建设推seo的工作流程
  • 国外做批发的网站最近国际新闻
  • 做旅游海报哪个网站好免费的竞价防恶意点击
  • 网站建设需要哪些工具与知识杭州seo博客
  • 宁波网络公司怎么选广东网站seo
  • 商务咨询网站源码北京网站推广营销服务电话
  • 苹果手机如何做网站服务器营销策划案例
  • 找人做网站去哪里找semen是什么意思
  • 网站的权限设置百度推广怎么联系
  • 17做网站广州新塘网络营销策略理论
  • 网站从哪几个方面维护搜索引擎优化服务公司哪家好
  • 成都网站建设 常凡云360广告推广平台
  • 多用户网站建设方案职业教育培训机构排名前十
  • 做网站架构需要什么工具seo优化关键词0
  • 做商城网站哪里买b站怎么推广