国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

Redis 訂閱與發布

2019-11-08 20:30:43
字體:
來源:轉載
供稿:網友

Redis是一個key-value的存儲系統,提供的key-value類似與Memcached而數據結構又多于memcached,而且性能優異.廣泛用于緩存,臨時存儲等,不僅如此redis pubsub還可以實現發布–訂閱功能,實時推送給訂閱端。

1.實現發布功能

[java] view plain copy PRint?在CODE上查看代碼片package cn.slimsmart.redis.spring.data.redis.pubsub;    import redis.clients.jedis.Jedis;  import redis.clients.jedis.JedisPool;  import redis.clients.jedis.JedisPoolConfig;    public class JedisPubSubTest {      static JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();      static {          jedisPoolConfig.setMaxTotal(10);          jedisPoolConfig.setMaxIdle(2);      }      static JedisPool pool = new JedisPool(jedisPoolConfig, "127.0.0.1", 6379, 5000);        public static void main(String[] args) {          Jedis jedis = pool.getResource();          try {              jedis.publish("test_channel", "hello Word!");          } finally {              pool.returnResource(jedis);          }          pool.destroy();      }  }  

2.實現發布訂閱功能繼續JedisPubSub類實現對訂閱到消息后的處理。

[java] view%20plain copy print?package cn.slimsmart.redis.spring.data.redis.pubsub;    import redis.clients.jedis.JedisPubSub;    public class JedisPubSubListener extends JedisPubSub {      @Override      public void onMessage(String channel, String message) {          // 取得訂閱的消息后的處理          System.out.println(channel + "    " + message);      }        @Override      public void onPMessage(String pattern, String channel, String message) {          // 取得按表達式的方式訂閱的消息后的處理      }        @Override      public void onPSubscribe(String pattern, int subscribedChannels) {          // 初始化按表達式的方式訂閱時候的處理      }        @Override      public void onPUnsubscribe(String pattern, int subscribedChannels) {          // 取消按表達式的方式訂閱時候的處理      }        @Override      public void onSubscribe(String channel, int subscribedChannels) {          // 初始化訂閱時候的處理      }        @Override      public void onUnsubscribe(String channel, int subscribedChannels) {          // 取消訂閱時候的處理      }  }  

3.測試訂閱功能

[java] view%20plain copy print?派生到我的代碼片package cn.slimsmart.redis.spring.data.redis.pubsub;    import redis.clients.jedis.Jedis;  import redis.clients.jedis.JedisPool;  import redis.clients.jedis.JedisPoolConfig;    public class JedisTest {      static JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();      static {          jedisPoolConfig.setMaxTotal(10);          jedisPoolConfig.setMaxIdle(2);      }      static JedisPool pool = new JedisPool(jedisPoolConfig, "127.0.0.1", 6379, 5000);      public static void main(String[] args) {          Jedis jedis = pool.getResource();          try {              JedisPubSubListener pubsub = new JedisPubSubListener();              //訂閱              jedis.subscribe(pubsub, "hq_xq_pubsub");          } finally {              pool.returnResource(jedis);          }          pool.destroy();      }  }  

測試的時候先啟動JedisTest 類,然后再啟動JedisPubSubTest類。主要運行原理就是socket。

關于spring-data-redis實現發布訂閱,請參考文章:

Spring Data Redis實現一個訂閱/發布系統


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 东阿县| 庆城县| 晋中市| 梁河县| 蓝山县| 沙坪坝区| 纳雍县| 偃师市| 淳安县| 鄯善县| 招远市| 松潘县| 富宁县| 奎屯市| 波密县| 太白县| 栾川县| 静安区| 英超| 米脂县| 昌邑市| 新绛县| 乌审旗| 忻城县| 怀来县| 普安县| 洪江市| 沂南县| 丰镇市| 文登市| 博客| 普安县| 新营市| 南川市| 敦煌市| 永修县| 马山县| 涟水县| 西乌珠穆沁旗| 青阳县| 柘荣县|