如何用 PHP 让 Redis 定时更新
2017-03-06| 程成| 2527| 7| Redis

如何做到redis的定时更新,下面介绍三种方法:



一、设置redis中key的过期描述


$redis->expire('key',10);

这样键名为key的redis在10s后会失效,可以通过代码实现自动更新。




二、接口调用更新redis


你可以写一个接口,通过先执行

$redis->del($key_arr);

注:这里key_arr可以是一个健或者一个数组,返回执行成功的个数


删除需要更新的redis,然后在执行

$redis->set('key',1);

设置redis,并且把这个方法加入到定时任务里,就可以实现定时更新




三、灵活运用php方法实现


首先直接上代码,(基于thinkphp):


/**
* redis获取头部分类
* @DateTime:2016-12-26 10:20:07
* @Author:  cc
*/
public function _getHeader() {
    $blog_header = $this->redis->get('blog_header');
    $newday = mktime(0, 0, 0, date('m'), date('d'), date('Y'));
    if (!$blog_header || $blog_header['raddtime'] < $newday) {
        $header = D('Article')->getHeader();
        $blog_header['raddtime'] = time();
        $blog_header['blog_header'] = $header;
        $this->redis->set('blog_header', $blog_header);
    }
    $this->assign('header', $blog_header['blog_header']);
}


1、这里我设置的是每天0点定时更新redis值

2、通过把数据库取到的数据和当天零点时间放到同一个数组中,然后把这个数组直接赋值到redis的一个key里。

3、以后通过这个key取数据的时候,先判断其中的时间和现在的时间对比是否过期;如果过期,则重新读库再重新设置redis和time;如果没过期,直接返回redis中的数据。


同理,通过这个方法可以实现1小时更新,1周更新,1个月更新一次,自己想定多长时间执行都可以。非常灵活,不需要去手动更新,非常实用!


×
作者:程成
QQ:492245711