laravel Redis键过期监听
官方术语:keyspace notification(键空间通知)
前言:
一、需求分析:
- 对过期Key有个监听,实现定时任务
- 本文所说的定时任务或者说计划任务并不是Crontab,比如说每天凌晨三点自动运行起来跑一个脚本
- 这里所说的定时任务可以说是计时器任务,比如说用户触发了某个动作,那么从这个点开始过二十四小时我们要对这个动作做点什么。那么如果有 1000 个用户触发了这个动作,就会有 1000 个定时任务。于是这就不是 Cron 范畴里面的内容了。
二、Redis介绍
(1)Publish / Subscribe
Redis 在 2.0.0 之后推出了 Pub / Sub 的指令,大致就是说一边给 Redis 的特定频道发送消息,另一边从 Redis 的特定频道取值——形成了一个简易的消息队列。
(2)Redis Keyspace Notifications
在 Redis 的 2.8.0 版本之后,其推出了一个新的特性——键空间消息(Redis Keyspace Notifications),它配合 2.0.0 版本之后的 SUBSCRIBE 就能完成这个定时任务
三、Key过期事件的Redis配置
这里需要配置 notify-keyspace-events 的参数为 “Ex”。x 代表了过期事件。notify-keyspace-events “Ex” 保存配置后,重启Redis服务,使配置生效。
(window 加载配置文件启动
ps:根据自己修改的配置文件,双击启动redis服务 不加载配置文件的可用如下方法)
或者 在redis-cli 客户端输入如下命令:
config set notify-keyspace-events Ex
四、laravel 中redis 的配置
laravel 安装redis扩展 composer require predis/predis
1.修改laravel database.php
注意 :<