3.实战
通过Redis自带的redis-cli命令,我们可以在服务端通过命令行的方式直接操作。我们运行上面的示例代码,然后迅速切换到redis-cli命令中,建立一个生命周期很短暂的数据:127.0.0.1:6379> set chaijunkun 123 PX 100PX参数指定生命周期单位为毫秒,100即声明周期,即100毫秒。key为chaijunkun的数据,其值为123。当执行语句后,回显:
OK
这时我们看实例程序的输出:
*=__keyevent@0__:expired=chaijunkun从输出可以看出,之前指定的通配符为*,通配任何通道;之后是实际的通道名称:__keyevent@0__:expired,这里我们可以看到订阅收到了一个keyevent位于 数据库0,事件类型为:expired,是一个过期事件;最后是chaijunkun,这个是过期数据的key。在官方文档中,keyevent通道的格式永远是这样的: __keyevent@
对于数据过期事件,我们在绑定订阅时通配模板也可以精确地写成: __keyevent@*__:expired
4.其他应用
之前的代码中,对于事件的发布都是由Redis自己生成的。实际上在命令中主动发布自定义消息也是可以的,在publish命令的帮助中我们看到:127.0.0.1:6379> help publish PUBLISH channel message summary: Post a message to a channel since: 2.0.0 group: pubsub
通过参数,可以自定义通道名称和通道消息。而在Jedis中,发布API甚至做到了字节数据的级别: jedis.publish(byte[] channel, byte[] message)
因此我们可以构想,自定一套通讯协议,channel为命令字,message为消息体,我们可以通过redis这种简单的发布/订阅机制实现消息的分发。