实战SSM_O2O商铺_47【Redis缓存】清除缓存接口的开发
文章目录
- 概述
- 接口层改造
- CacheService接口
- CacheService接口实现类
- 工具类中的方法
- 单元测试
- Github地址
概述
设计如下: 在接口层传入缓存key的前缀,通过匹配的方式将能匹配到该前缀的所有key均删除。
举个例子
如上3个key,当我们传入shopcategory这个前缀时,会将如上3个前缀全部清除掉。
接口层改造
为了方便使用前缀,我们在将之前定义在方法体中的前缀抽取到接口层,如下所示
public interface AreaService {// redis key的前缀,抽取到接口层,方便使用public static final String AREALISTKEY = "arealist";..........
}
public interface HeadLineService {// redis key的前缀,抽取到接口层,方便使用public static final String HEADLINEKEY = "headline";..........
}
public interface ShopCategoryService {// redis key的前缀,抽取到接口层,方便使用public static final String SCLISTKEY = "shopcategory";..........
}
CacheService接口
package com.artisan.o2o.service;public interface CacheService {/*** * * @Title: removeFromCache* * @Description: 根据缓存的前缀清理匹配的全部缓存* * @param keyPrefix* * @return: void*/void removeFromCache(String keyPrefix);
}
CacheService接口实现类
package com.artisan.o2o.service.impl;import java.util.Set;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;import com.artisan.o2o.cache.JedisUtil;
import com.artisan.o2o.service.CacheService;@Service
public class CacheServiceImpl implements CacheService {@AutowiredJedisUtil.Keys jedisKeys;@Overridepublic void removeFromCache(String keyPrefix) {Set<String> keySet = jedisKeys.keys(keyPrefix + "*");for (String key : keySet) {jedisKeys.del(key);}}}
工具类中的方法
/*** 查找所有匹配给定的模式的键* * @param String* key的表达式,*表示多个,?表示一个* */public Set<String> keys(String pattern) {Jedis jedis = getJedis();Set<String> set = jedis.keys(pattern);jedis.close();return set;}/*** 删除keys对应的记录,可以是多个key* * @param String* ... keys* @return 删除的记录数* */public long del(String... keys) {Jedis jedis = getJedis();long count = jedis.del(keys);jedis.close();return count;}
单元测试
package com.artisan.o2o.service;import java.io.IOException;
import java.util.List;import org.junit.Test;
import org.springframework.beans.factory.annotation.Autowired;import com.artisan.o2o.BaseTest;
import com.artisan.o2o.entity.Area;
import com.fasterxml.jackson.core.JsonParseException;
import com.fasterxml.jackson.databind.JsonMappingException;public class AreaServiceTest extends BaseTest {@AutowiredAreaService areaService;@AutowiredCacheService cacheService;@Testpublic void testGetAreaList() throws JsonParseException, JsonMappingException, IOException {// 首次从db中加载List<Area> areaList = areaService.getAreaList();for (Area area : areaList) {System.out.println("||---->" + area.toString());}// 再次查询从redis中获取areaList = areaService.getAreaList();for (Area area : areaList) {System.out.println("**---->" + area.toString());}// 清除缓存cacheService.removeFromCache(AreaService.AREALISTKEY);// 再次查询 从db中获取areaList = areaService.getAreaList();for (Area area : areaList) {System.out.println("**---->" + area.toString());}// 再次查询从redis中获取areaList = areaService.getAreaList();for (Area area : areaList) {System.out.println("**---->" + area.toString());}}}
观察数据,确保测试结果符合预期。 比较简单就不贴数据了。
Github地址
代码地址: https://github.com/yangshangwei/o2o
实战SSM_O2O商铺_47【Redis缓存】清除缓存接口的开发相关推荐
- 实战SSM_O2O商铺_46【Redis缓存】头条信息+商铺目录Service层加入缓存
文章目录 概述 HeadLineServiceImpl的改造 代码 单元测试 ShopCategoryServiceImpl的改造 代码 单元测试 Github地址 概述 根据数据的特点,不经常变动的 ...
- 实战SSM_O2O商铺_42【前端展示】店铺列表页面View层的实现
文章目录 概述 代码结构 shoplist.html shoplist.js shoplist.css common.js添加解析日期的公共方法 FrontEndController添加路由 联调测试 ...
- 实战SSM_O2O商铺_40【前端展示】首页轮播图和一级商铺View层的实现
文章目录 概述 index.html index.js index.css Controller 调测 修复问题 头条图片展示修复 一级类别商铺图片展示修复 Github地址 概述 在完成了后端 实战 ...
- 实战SSM_O2O商铺_38【商品类别】解除商品与商品类别的关联
文章目录 概述 Dao层 ProductDao.java ProductDao.xml 单元测试 Service层完善 ProductCategoryServiceImpl#deleteProduct ...
- 实战SSM_O2O商铺_34【商品】商品编辑之Controller层的实现
文章目录 概述 ProductController 单元测试 Github地址 概述 在完成了 实战SSM_O2O商铺_33[商品]商品编辑之Service层的实现之后,我们继续来实现Controll ...
- 实战SSM_O2O商铺_32【商品】商品编辑之Dao层的实现
文章目录 概述 Dao层接口 ProductDao#selectProductById ProductDao#updateProduct ProductImgDao#deleteProductImgB ...
- 实战SSM_O2O商铺_31【商品】商品添加之View层的实现
文章目录 概述 productoperation.html productoperation.js 联调 检查结果 库表数据: 磁盘上的图片 Github地址 概述 在完成了 实战SSM_O2O商铺_ ...
- 实战SSM_O2O商铺_28【商品】商品添加之Dao层的实现
文章目录 概述 重温实体类 Prouct ProductImg ProductDao接口 Mapper配置文件 ProductImgDao接口 Mapper配置文件 单元测试 #ProductDaoT ...
- 实战SSM_O2O商铺_27【商品类别】删除商品类别从Dao到View层的开发
文章目录 概述 Dao层 ProductCategoryDao接口增加接口方法 ProductCategoryDao SQL映射文件 闭环的单元测试 Servie层 接口 接口实现 单元测试 Cont ...
最新文章
- hihocoder 网络流二·最大流最小割定理
- mysql里面的sql_mysql工作中的sql
- 【深度学习】近几年,关于基于Imagenet数据集图像分类的模型总结
- 模版方法模式在Spring框架中的应用
- MySQL5.6 数据库主从(Master/Slave)同步安装与配置详解
- 金蝶K3物料主数据计划策略字段设置
- [远程控制]木马伪装:图片
- 解决ubuntu安装软件has install-snap change in progress错误
- 木马万能查杀清除方法,木马专杀
- mysql 查询部门中男女人数,工资最高,等
- 墙裂推荐6本适用于所有Java程序员阅读书籍
- 【C语言程序】某班级学习委员整理获得奖学金排名,总成绩=智育成绩*60%+德育成绩*30%+体育成绩*10%,使用冒泡排序法将班级前12名同学的成绩进行排名。
- linux通过网线连路由器上网
- 东北大学计算机难度,东北大学考研难吗
- MarkDown特殊字符转义(七)
- 计算机实现乘法和除法的运算逻辑
- 学习《华为基本法》理解企业管理经营框架(1):控制方针
- 洗脑有术:如何防止被洗脑?
- 苹果官方付费升级内存_为了玩史上最贵的付费手游,不仅得割肾还要净身!
- 前端框架的新星-Hyperapp 1.0简介