我在开发的时候曾经遇到了这样一个问题,产品要求给每个在线预约看病的患者,距离预约时间的前一天发送一条提醒推送,以防止患者错过看病的时间。这个时候就要求我们给每个人设置一个定时任务,用前面文章说的延迟队列也可以实现,但延迟队列的实现方式需要开启一个无限循环任务,那有没有其他的实现方式呢?
答案是肯定的,接下来我们就用 Keyspace Notifications(键空间通知)来实现定时任务,定时任务指的是指定一个时间来执行某个任务,就叫做定时任务。
开启键空间通知
默认情况下 Redis 服务器端是不开启键空间通知的,需要我们手动开启。
键空间开启分为两种方式:
- 命令设置方式
- 配置文件设置方式
接下来,我们分别来看。
命令设置方式
使用 redis-cli 连接到服务器端之后,输入 config set notify-keyspace-events Ex
命令,可以直接开启键空间通知功能,返回“OK”则表示开启成功,如下命令所示:
127.0.0.1:6379> config set notify-keyspace-events Ex
OK
优点:
- 设置方便,无序启动 Redis 服务。
缺点:
- 这种方式设置的配置信息是存储在内存中的,重启 Redis 服务之后,配置项会丢失。