redis常用方法
package com.guodi.assets.common.utils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.BoundSetOperations;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
import java.util.concurrent.TimeUnit;
import java.util.stream.Collectors;
import java.util.stream.Stream;
@Service
public class RedisHelper<T> {
@Autowired
public RedisTemplate redisTemplate;
public <T> ValueOperations<String, T> setCacheObject(String key, T value) {
System.out.println(key + "*****" + value.toString());
ValueOperations<String, T> operation = redisTemplate.opsForValue();
operation.set(key, value);
return operation;
}
public <T> ValueOperations<String, T> setCacheObjectAndtimeout(String key, T value, long timeout) {
System.out.println(key + "*****" + value.toString());
ValueOperations<String, T> operation = redisTemplate.opsForValue();
operation.set(key, value, timeout, TimeUnit.SECONDS);
return operation;
}
public <T> T getCacheObject(String key) {
ValueOperations<String, T> operation = redisTemplate.opsForValue();
return operation.get(key);
}
public <T> ListOperations<String, T> setCacheList(String key, List<T> dataList) {
ListOperations listOperation = redisTemplate.opsForList();
if (null != dataList) {
int size = dataList.size();
for (int i = 0; i < size; i++) {
listOperation.rightPush(key, dataList.get(i));
}
}
return listOperation;
}
public <T> List<T> getCacheList(String key) {
List<T> dataList = new ArrayList<T>();
ListOperations<String, T> listOperation = redisTemplate.opsForList();
Long size = listOperation.size(key);
for (int i = 0; i < size; i++) {
dataList.add((T) listOperation.leftPop(key));
}
return dataList;
}
public <T> BoundSetOperations<String, T> setCacheSet(String key, Set<T> dataSet) {
BoundSetOperations<String, T> setOperation = redisTemplate.boundSetOps(key);
Iterator<T> it = dataSet.iterator();
while (it.hasNext()) {
setOperation.add(it.next());
}
return setOperation;
}
public Set<T> getCacheSet(String key) {
Set<T> dataSet = new HashSet<T>();
BoundSetOperations<String, T> operation = redisTemplate.boundSetOps(key);
Long size = operation.size();
for (int i = 0; i < size; i++) {
dataSet.add(operation.pop());
}
return dataSet;
}
public <T> HashOperations<String, String, T> setCacheMap(String key, Map<String, T> dataMap) {
HashOperations hashOperations = redisTemplate.opsForHash();
if (null != dataMap) {
for (Map.Entry<String, T> entry : dataMap.entrySet()) {
hashOperations.put(key, entry.getKey(), entry.getValue());
}
}
return hashOperations;
}
public <T> Map<String, T> getCacheMap(String key) {
Map<String, T> map = redisTemplate.opsForHash().entries(key);
return map;
}
public <T> HashOperations<String, Integer, T> setCacheIntegerMap(String key, Map<Integer, T> dataMap) {
HashOperations hashOperations = redisTemplate.opsForHash();
if (null != dataMap) {
for (Map.Entry<Integer, T> entry : dataMap.entrySet()) {
hashOperations.put(key, entry.getKey(), entry.getValue());
}
}
return hashOperations;
}
public <T> Map<Integer, T> getCacheIntegerMap(String key) {
Map<Integer, T> map = redisTemplate.opsForHash().entries(key);
return map;
}
public void deleteKey(String key) {
redisTemplate.delete(key);
}
public void deleteKey(String... keys) {
Set<String> kSet = Stream.of(keys).map(k -> k).collect(Collectors.toSet());
redisTemplate.delete(kSet);
}
public void deleteKey(Collection<String> keys) {
Set<String> kSet = keys.stream().map(k -> k).collect(Collectors.toSet());
redisTemplate.delete(kSet);
}
public void deleteKeysByPattern(String pattern) {
Set<String> keys = redisTemplate.keys(pattern);
redisTemplate.delete(keys);
}
}
删除缓存
package com.guodi.assets.map.controller;
import com.guodi.assets.common.utils.RedisHelper;
import com.guodi.core.tool.api.R;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
@RestController
@RequestMapping("/mapRedis")
@Api(value = "redis接口用于清理缓存", tags = "redis接口用于清理缓存")
public class MapRedisController {
@Autowired
RedisHelper redisHelper;
@ApiOperation(value = "清除页面统计缓存")
@GetMapping(value = "/deleteRedis")
@ResponseBody
public R refreshRedis() {
try {
redisHelper.deleteKeysByPattern("cache_*");
} catch (RuntimeException e) {
e.printStackTrace();
return R.success("服务器刷新失败!");
}
return R.success("服务器内存刷新成功!");
}
}
如何使用例子
List result = new LinkedList<>();
result= JSONArray.parseArray(redisHelper.getCacheObject(rediskey).toString(), JSONObject.class);
String analysisRes = null;
String key = "cache" + "_" + operation + "_" + districtCode + "_" + fromYear + "_" + toYear + "_" + item + "_" + subItem;
if (redisHelper.getCacheObject(key) == null) {
String url = getSoeUrl() + "/TendencyStatistics?operation=" + operation + "&districtcode=" + districtCode
+ "&fromYear=" + fromYear + "&toYear=" + toYear + "&item=" + item + "&subItem="
+ subItem + "&f=pjson";
analysisRes = HttpUtil.get(url, -1);
redisHelper.setCacheObject(key, analysisRes);
} else {
analysisRes = redisHelper.getCacheObject(key).toString();
}
List<PriceShow> priceShows = new ArrayList<>();
priceShows = JSON.parseArray(redisHelper.getCacheObject(rediskey).toString(), PriceShow.class);