国产探花免费观看_亚洲丰满少妇自慰呻吟_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實現一個訂閱/發布系統


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 和平县| 蕲春县| 扎兰屯市| 苏尼特右旗| 宣化县| 朝阳区| 左云县| 安化县| 新源县| 鸡西市| 虎林市| 旬阳县| 中西区| 姜堰市| 太仆寺旗| 湾仔区| 弥勒县| 北票市| 青铜峡市| 泾阳县| 富宁县| 汝阳县| 新泰市| 顺义区| 嘉祥县| 荔波县| 济宁市| 策勒县| 义乌市| 桃园市| 宁河县| 昌乐县| 海阳市| 广东省| 牟定县| 鄂州市| 图们市| 邢台县| 色达县| 星子县| 绥江县|