实战SSM_O2O商铺_47【Redis缓存】清除缓存接口的开发
生活随笔
收集整理的這篇文章主要介紹了
实战SSM_O2O商铺_47【Redis缓存】清除缓存接口的开发
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
文章目錄
- 概述
- 接口層改造
- CacheService接口
- CacheService接口實(shí)現(xiàn)類
- 工具類中的方法
- 單元測試
- Github地址
概述
設(shè)計(jì)如下: 在接口層傳入緩存key的前綴,通過匹配的方式將能匹配到該前綴的所有key均刪除。
舉個(gè)例子
如上3個(gè)key,當(dāng)我們傳入shopcategory這個(gè)前綴時(shí),會(huì)將如上3個(gè)前綴全部清除掉。
接口層改造
為了方便使用前綴,我們?cè)趯⒅岸x在方法體中的前綴抽取到接口層,如下所示
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: 根據(jù)緩存的前綴清理匹配的全部緩存* * @param keyPrefix* * @return: void*/void removeFromCache(String keyPrefix); }CacheService接口實(shí)現(xiàn)類
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的表達(dá)式,*表示多個(gè),?表示一個(gè)* */public Set<String> keys(String pattern) {Jedis jedis = getJedis();Set<String> set = jedis.keys(pattern);jedis.close();return set;}/*** 刪除keys對(duì)應(yīng)的記錄,可以是多個(gè)key* * @param String* ... keys* @return 刪除的記錄數(shù)* */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());}}}觀察數(shù)據(jù),確保測試結(jié)果符合預(yù)期。 比較簡單就不貼數(shù)據(jù)了。
Github地址
代碼地址: https://github.com/yangshangwei/o2o
總結(jié)
以上是生活随笔為你收集整理的实战SSM_O2O商铺_47【Redis缓存】清除缓存接口的开发的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 实战SSM_O2O商铺_46【Redis
- 下一篇: Redis-01Redis概述