利用Redis的发布订阅模式,配合过期key的事件通知,可以实现定时任务。


编辑 redis.conf 配置文件,添加事件通知配置并重启

1
notify-keyspace-events Ex

业务逻辑以 php 代码为例

1
2
3
4
5
6
7
8
9
10
$redis = new Redis();
$redis->connect($HOST, $PORT);

function test($redis, $pattern, $channel, $msg) {
echo "Pattern: $pattern\n";
echo "Channel: $channel\n";
echo "Payload: $msg\n";
}

$redis->psubscribe(array('__key*__:expired'), 'test');

效果

Redis命令

php脚本

可以满足「预约」、「取消预约」的功能。

参考链接

http://redis.io/topics/notifications