如何做到redis的定时更新,下面介绍三种方法:
$redis->expire('key',10);
这样键名为key的redis在10s后会失效,可以通过代码实现自动更新。
你可以写一个接口,通过先执行
$redis->del($key_arr);
删除需要更新的redis,然后在执行
$redis->set('key',1);
设置redis,并且把这个方法加入到定时任务里,就可以实现定时更新
首先直接上代码,(基于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个月更新一次,自己想定多长时间执行都可以。非常灵活,不需要去手动更新,非常实用!