1.使用注解的情况
①写RedisConfig
@Configuration
@EnableCaching
public class RedisCacheConfig extends CachingConfigurerSupport {
@Bean
public CacheManager cacheManager(RedisTemplate redisTemplate) {
RedisCacheManager rcm = new RedisCacheManager(redisTemplate);
... ...
return rcm;
}
... ...
}
②写RedisKeyConstant
package com.demo.yes.service.Constants;
import com.demo.yes.service.impl.RegionServiceImpl;
public final class RedisKeyConstants {
static final String _PREFIX = "demo:";
//实体类缓存键
public static final class EntityCacheKey {
public static final String D = _PREFIX+"d:";
}
//操作类缓存键
public static final class OperationClassCacheKey {
public static final String PWSWORKSTATISTICSSERVICEIMPL = _PREFIX + "xxxxxxserviceimpl";
public static final String REGIONSERVICEIMPL = _PREFIX + "regionserviceimpl";
}
}
③ServiceImpl类用注解
@Service
@CacheConfig(cacheNames = RedisPwsConstants.OperationClassCacheKey.REGIONSERVICEIMPL)
public class RegionServiceImpl implements IRegionService {
@Autowired
private Region region;
@Override
@Cacheable(key = "'getRegion:'+#root+'-'+#level")
public JSONObject getRegion(String r, Integer l) {
}
}
2.不使用注解的情况
①写RedisConfig类
同上
②写RedisKeyConstant类
同上
③写RedisServiceImpl(重要,对标注解)
@Service
public class RedisServiceImpl implements RedisService {
@Qualifier("redisTemplateJackson")
@Autowired()
RedisTemplate jsonRedisTemplate;
@Override
public void saveValueToSet(String key, Object value) {
jsonRedisTemplate.opsForSet().add(key, value);
}
@Override
public void deleteValueBySet(String key, Object value) {
jsonRedisTemplate.opsForSet().remove(key, value);
}
@Override
public boolean hasValueInSet(String key, Object value) {
return jsonRedisTemplate.opsForSet().isMember(key, value);
}
@Override
public void deleteCacheByKey(String key) {
jsonRedisTemplate.delete(key);
}
@Override
public boolean hasKey(String key) {
return jsonRedisTemplate.hasKey(key);
}
@Override
public void saveKVToHash(String hash, Object key, Object value) {
jsonRedisTemplate.opsForHash().put(hash, key, value);
}
@Override
public void saveMapToHash(String hash, Map map) {
jsonRedisTemplate.opsForHash().putAll(hash, map);
}
@Override
public Map getMapByHash(String hash) {
return jsonRedisTemplate.opsForHash().entries(hash);
}
@Override
public Object getValueByHashKey(String hash, Object key) {
return jsonRedisTemplate.opsForHash().get(hash, key);
}
@Override
public boolean hasHashKey(String hash, Object key) {
return jsonRedisTemplate.opsForHash().hasKey(hash,key);
}
@Override
public void incrementByHashKey(String hash, Object key, int increment) {
if (increment < 0) {
throw new RuntimeException("递增因子必须大于0");
}
jsonRedisTemplate.opsForHash().increment(hash, key, increment);
}
@Override
public void deleteByHashKey(String hash, Object key) {
jsonRedisTemplate.opsForHash().delete(hash, key);
}
@Override
public int countBySet(String key) {
return jsonRedisTemplate.opsForSet().size(key).intValue();
}
@Override
public void deleteAllKeys() {
jsonRedisTemplate.delete(jsonRedisTemplate.keys("*"));
}
@Override
public void expire(Object key, int secondes) {
jsonRedisTemplate.expire(key,secondes, TimeUnit.SECONDS);
}
@Override
public void incrementByKey(String key, int increment) {
if (increment < 0) {
throw new RuntimeException("递增因子必须大于0");
}
jsonRedisTemplate.opsForValue().increment(key, increment);
}
@Override
public void saveObjectToValue(String key, Object object) {
jsonRedisTemplate.opsForValue().set(key, object);
}
@Override
public Object getObjectByValue(String key) {
Object redisResult = jsonRedisTemplate.opsForValue().get(key);
return redisResult;
}
}
④Controller层调用
@RestController
public class BlogController {
@Autowired
BlogService blogService;
@Autowired
RedisService redisService;
Logger logger = LoggerFactory.getLogger(BlogController.class);
@VisitLogger(behavior = "访问页面",content = "首页")
@GetMapping("/blogs")
public Result getBlogsByPage(@RequestParam(defaultValue = "1") Integer currentPage) {
//有缓存直接返回
if(redisService.hasHashKey(RedisKeyConfig.BLOG_INFO_CACHE,currentPage)){
return Result.succ(redisService.getValueByHashKey(RedisKeyConfig.BLOG_INFO_CACHE,currentPage));
}
Page page = new Page(currentPage, 5);
IPage pageData = blogService.page(page, new QueryWrapper().eq("status", 1).orderByDesc("create_time"));
redisService.saveKVToHash(RedisKeyConfig.BLOG_INFO_CACHE, currentPage,pageData);
return Result.succ(pageData);
}
}



