编译结果:
- 连接成功列表项为: Taobao列表项为: Google列表项为: Runoob
存取的 Keys
- import java.util.Iterator;import java.util.Set;import redis.clients.jedis.Jedis;public class RedisKeyJava { public static void main(String[] args) { //连接本地的 Redis 服务 Jedis jedis = new Jedis("localhost"); System.out.println("连接成功"); // 获取数据并输出 Set keys = jedis.keys("*"); Iterator it=keys.iterator() ; while(it.hasNext()){ String key = it.next(); System.out.println(key); } }}
编译结果:
- 连接成功runoobkeysite - list
Redis 发布与订阅
Redis 发布订阅 (pub/sub) 是一种消息通信模式:发送者 (pub) 发送消息,订阅者 (sub) 接收消息。
订阅频道
通过 SUBSCRIBE 命令客户端可以订阅指定的频道,当这个频道有其他客户端推送的消息时,当前客户端就会收到。
例:订阅 first 和 second 频道
- SUBSCRIBE first second
消息推送
通过 PUBLISH 命令客户端可以向指定频道推送消息,订阅这个频道的客户端都会收到一条 message 类型的消息。
例:推送消息 "Hello" 到 first 频道
- PUBLISH first "Hello"
退订频道
通过 UNSUBSCRIBE 命令客户端可以推定指定频道。如果没有频道被指定,即一个无参数的 UNSUBSCRIBE 调用被执行,那么客户端使用 SUBSCRIBE 命令订阅的所有频道都会被退订。在这种情况下,命令会返回一个信息,告知客户端所有被退订的频道。
例:退订 second 频道
- UNSUBSCRIBE second
模式匹配
Redis 的 Pub/Sub 实现支持模式匹配。客户端可以订阅全风格的模式以便接收所有来自能匹配到给定模式的频道的消息。
- 模式匹配订阅命令 PSUBSCRIBE
- 模式匹配退订命令 UNPSUBSCRIBE
- 接收消息为 pmessage 类型
- SUBSCRIBE firstPSUBSCRIBE f * PSUBSCRIBE news. *
注意:如果它订阅的多个模式匹配了同一个发布的消息,客户端可能多次接收一个消息。
JAVA 实现 Redis 消息推送创建一个频道的监听类继承 Redis 的抽象类 JedisPubSub,并实现其抽象方法。订阅频道,取消订阅,收到消息等状态会对应调用相关的方法。 订阅频道
- public class TestSubscribe { public static void main(String[] args) { //连接本地的 Redis 服务 Jedis jedis = new Jedis("localhost"); System.out.println("连接成功"); // 创建频道监听对象 RedisMsgPubSubListener listener = new RedisMsgPubSubListener(); // 订阅频道,绑定监听 jedis.subscribe(listener, "redisChatTest"); } }
注意:subscribe 是一个阻塞的方法,在取消订阅该频道前,会一直阻塞在这,只有当取消了订阅才会执行之后的代码。
发送消息
- Public class TestPublish { public static void main(String[] args) { Jedis jedis = new Jedis("localhost"); jedis.publish("redisChatTest", "Hello"); Thread.sleep(5000); jedis.publish("redisChatTest", "Redis"); Thread.sleep(5000); jedis.publish("redisChatTest", "Message publish"); } }
退订频道
- import redis.clients.jedis.JedisPubSub; public class RedisMsgPubSubListener extends JedisPubSub { ... @Override public void onMessage(String channel, String message) { System.out.println("channel:" + channel + "receives message :" + message); // 退订 this.unsubscribe(); } ...}
来源: http://www.92to.com/bangong/2017/08-17/27110833.html