=" + redisTemplate.opsForValue().get(key);
}
}
5.访问:http://127.0.0.1:8080/swagger-ui.html。 也可直接浏览器输入:
set值
set值
get值
get值
浏览器访问
查看redis记录:
redis记录
至此,redis
就集成好了。实际中可根据业务需要进行相关操作,比如缓存session记录,缓存菜单列表等。
Spring Cache 和 redis 使用。
Spring Cache
是Spring
框架提供的对缓存使用的抽象类,支持多种缓存,比如Redis
、EHCache
等,集成很方便。同时提供了多种注解来简化缓存的使用,可对方法进行缓存。
0.修改RedisConfig
配置类,加入注解@EnableCaching
,同时设置CacheManager
缓存管理类,这里使用RedisCacheManager
,其他的管理类还有:SimpleCacheManager
、ConcurrentMapCacheManager
等,默认提供的在类org.springframework.cache.support
下,可自行查阅。
/**
*
* @author oKong
*
*/
@Configuration
@EnableCaching
public class RedisConfig {
/**
* 定义 StringRedisTemplate ,指定序列号和反序列化的处理类
* @param factory
* @return
*/
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
StringRedisTemplate template = new StringRedisTemplate(factory);
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(
Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
//序列化 值时使用此序列化方法
template.setValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
@Bean
public CacheManager cacheManager(RedisTemplate<String,String> redisTemplate) {
RedisCacheManager rcm = new RedisCacheManager(redisTemplate);
//使用前缀
rcm.setUsePrefix(true);
//缓存分割符 默认为 ":"
// rcm.setCachePrefix(new DefaultRedisCachePrefix(":"));
//设置缓存过期时间
//rcm.setDefaultExpiration(60);//秒
return rcm;
}
}
1.改造UserController
控制层,引入@Cacheable
等注解。
/**
* 用户控制层 简单演示增删改查及分页
* 新增了swagger文档内容 2018-07-21
* 新增了@caching使用 2018-07-23
* @author oKong
*
*/
@RestController
@RequestMapping("/user")
@Api(tags="用户API")
public class UserController {
@Autowired
IUserService userService;
@PostMapping("add")
@ApiOperation(value="用户新增")
//正常业务时, 需要在user类里面进行事务控制,控制层一般不进行业务控制的。
//@Transactional(rollbackFor = Exception.class)
public Map<String,String> addUser(@Valid @RequestBody UserReq userReq){
User user = new User();
user.setCode(userReq.getCode());
user.setName(userReq.getName());
//由于设置了主键策略 id可不用赋值 会自动生成
//user.setId(0L);
userService.insert(user);
Map<String,String> result = new HashMap<String,String>();
result.put("respCode", "01");
result.put("respMsg", "新增成功");
//事务测试
//System.out.println(1/0);
return result;
}
@PostMapping("update")
@ApiOperation(value="用户修改")
//更新时 直接删除缓存 以保证下次获取时先从数据库中获取最新数据
@CacheEvict(value="OKONG", key="#userReq.id")
public Map<String,String> updateUser(@Valid @RequestBody UserReq userReq){
if(userReq.getId() == null || "".equals(userReq.getId())) {
throw new CommonException("0000", "更新时ID不能为空");
}
User user = new User();
user.setCode(userReq.getCode());
user.se