php redis实现一个延迟消息队列代码
代码语言:phpcli
所属分类:其他
代码描述:php redis实现一个延迟消息队列代码
下面为部分代码预览,完整代码请点击下载或在bfwstudio webide中打开
<?php class DelayQueue { protected $prefix = 'delay_queue:'; protected $redis = null; protected $key = ''; private static $_instance = null; /** * 构造函数 * DelayQueue constructor. * @param $queue * @param array $config */ public function __construct($queue,$config = []) { $this->key = $this->prefix . $queue; $this->redis = new Redis(); $this->redis->connect($config['host'], $config['port'], $config['timeout']); $this->redis->auth($config['auth']); } /** * Notes: 获取数据库句柄方法 * User: jackin.chen * Date: 2020/7/20 下午3:55 * function: getRedis * @return null|Redis */ public function getRedis() { return $this->redis; } /** * Notes:这是获取当前类对象的唯一方式 * User: jackin.chen * Date: 2020/7/20 下午3:55 * function: getInstance * @param string $queue * @param array $config * @return DelayQueue|null * @static */ public static function getInstance($queue, $config = []) { // 检查对象是否已经存在,不存在则实例化后保存到$instance属性 if(!(self::$_instance instanceof self)){ //内部实例化对象 self::$_instance = new self($queue,$config); } return self::$_instance; } /** * Notes: 声明成私有方法,禁止克隆对象 * User: jackin.chen * Date: 2020/7/20 下午3:56 * function: __clone */ private function __clone(){} /** * Notes: 声明成私有方法,禁止重建对象 * User: jackin.chen * Date: 2020/7/20 下午3:56 * function: __wakeup */ private function __wakeup(){} /** * Notes: 删除任务列表 * User: jackin.chen * Date: 2020/7/20 下午4:00 * function: delTask * @param $value * @return int */ public function delTask($value) { return $this->redis->zRem($this->key, $value); } /** * Notes: 获取一条任务 * User: jackin.chen * Date: 2020/7/20 下午4:00 * function: getTask * @return array */ public function getTask() { //获取任务,以0和当前时间为区间,返回一条记录 return $this->redis->zRangeByScore($this->key, 0, time(), ['limit' => [0, 1]]); } /** * N.........完整代码请登录后点击上方下载按钮下载查看
网友评论0