博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
redis删除指定前缀的缓存
阅读量:6643 次
发布时间:2019-06-25

本文共 3114 字,大约阅读时间需要 10 分钟。

redis作为缓存服务器为MySQL数据库提供较高的防御性,对于一些数据的查询可以直接从缓存中可以进行查询。

但是,某些情况下,我们需要清除缓存。

以下场景:

公司经常做活动,每个活动都存在大量的数据。在新活动进行测试的时候,也会产生一些缓存,但是删除这些缓存如果不能批量删除就有点烦了。

在写活动的时候,为了保证活动的缓存不冲突,用自己姓名的前缀及活动的英文名作为前缀。缓存在很大程度上能够帮助我们降低服务器的访问压力,但是也要防止缓存失效的情况,缓存并不能作为我们的最终依靠。

首先在缓存中查询,如果缓存中不存在再去mysql数据库中查询,当数据库中真的不存在的时候,才能确定该查询的数据不存在;因此在数据库中查到数据的时候,再将该数据写入缓存。

------------------------------------------------------------------------------------------------------

如何删除指定前缀的redis。。。

我们一开始给redis封装了一个类库

handler = new Redis(); //从配置读取 $this->handler->connect($data['hostname'],$data['port']); $this->handler->auth($data['auth']); $this->handler->select($dbindex); } public static function getInstance($dbindex = 0){ if(!isset(self::$_instance[$dbindex]) or FALSE == (self::$_instance[$dbindex] instanceof self)){ self::$_instance[$dbindex] = new self($dbindex); } return self::$_instance[$dbindex]; } /**key value get**/ public function GET($key) { return $this->handler->get($key); } /**key value set 过期时间为 $exp**/ public function SET($key ,$value ,$exp) { $this->handler->setex($key ,$exp ,$value ); } /*移除数据$key*/ public function REMOVE($key) { $this->handler->delete($key); } /*设置数据的过期时间$key*/ public function EXPIRE($key ,$exp) { $this->handler->expire($key ,$exp); } /**Hash 相关**/ public function HGET($domain , $key) { return $this->handler->hGet($domain , $key); } public function HSET ($domain ,$key ,$value ) { $this->handler->hSet($domain , $key); } public function HREMOVE($domain ,$key) { $this->handler->hDel($domain , $key); } public function HGETALL($key = '' ){ return $this->handler->hGetAll($key); } public function HMset($key = '' , $value = array()){ return $this->handler->hMset($key , $value ); } /*插入列表*/ public function PushList($channel,$data) { $this->handler->lPush($channel,$data); } /*从列表中获取*/ public function POPList($channel) { return $this->handler->lPop($channel); } public function SADD($hash ,$value){ return $this->handler->SADD($hash ,$value); } public function SMEMBERS($hash){ return $this->handler->SMEMBERS($hash ); } /** * pj * 用于批量获取指定 * @param [type] $key [description] * 例如: * $key = "pj_group_*";//获取以pj_group_ $cache = RedisClass::getInstance(12); $data = $cache->KEYS($key); $cache->DELKEYS($data); */ public function KEYS($key){
//获取指定的key 或者指定前缀的key return $this->handler->keys($key ); } public function DELKEYS($data = array()){ return $this->handler->delete($data); } } ?>

批量删除redis缓存的思路:

先获取要删除的redis前缀,比如“pj_group_*”为前缀的

然后直接delete掉这些key就可以了

//删除指定开始的前缀缓存    public function indexAction(){        $key = "pj_group_*";//当前openid        $cache = RedisClass::getInstance(12);        $data = $cache->KEYS($key);        $cache->DELKEYS($data);    }

 

转载于:https://www.cnblogs.com/xs-yqz/p/7366498.html

你可能感兴趣的文章
Docker-run
查看>>
一点资讯拆VIE回国;拼多多做跨境海淘;复宏汉霖首款生物类似药获批
查看>>
怎么设计IOS登录页面的跳转关系
查看>>
ecshop 漏洞如何修复 补丁升级与安全修复详情
查看>>
【三】Centos7.4 安装Docker
查看>>
拜腾与博世将在动力系统、驾驶员辅助等方面展开重点合作
查看>>
国资入场,P2P网贷平台星火钱包千万级A+轮融资
查看>>
windows server21012 r2 密钥
查看>>
北大发布新零售之城发展指数报告,上海超北京成榜首
查看>>
python urllib爬取网页编码问题
查看>>
JMS的常用方法
查看>>
隐私与机器学习,二者可以兼得吗?
查看>>
DNS原理概念详解
查看>>
shell数组的使用
查看>>
深入理解C语言的预编译指令之 include
查看>>
Performance Monitoring Per RDM and HBA
查看>>
新瓶如何和平改造老酒?(野生项目笔记01)
查看>>
Python实现MySQL DBA小工具一例
查看>>
YodaOS 中是如何生成 API 的?
查看>>
Android 中Fragment的自动重建
查看>>