springboot1.5.12 + redis + mybatis 来进行数据的缓存
开发者的使用
1. 需要我们使用的分别是这几个注解
@CacheConfig------------------来命名使用的cache的名字
@Cacheable---------------------将返回的数据放入缓存
@Cacheput----------------------执行方法,并将方法返回值放入缓存
@CacheEvict-------------------删除缓存内数据
@Caching-----------------------配置复杂的缓存
对于注解,我的使用是这样的,详细的用法请查看demo演示
@Service
@CacheConfig(cacheNames = "redis")
public class RedisService {
@Cacheable(key = "#key")
public String stringCache(String key, String value){
return value;
}
@CachePut(Key = "#employee.id")
public Employee updateEmp(Employee employee){
System.out.println("updateEmp:"+employee);
employeeMapper.updateEmp(employee);
return employee;
}
@CacheEvict(allEntries = true)
public void clear(){}
@Caching(
cacheable = {
@Cacheable(key = "#lastName")
},
put = {
@CachePut(key = "#result.id"),
@CachePut(key = "#result.email")
}
)
public Employee getEmpByLastName(String lastName){
return employeeMapper.getEmpByLastName(lastName);
}
}
构建redis缓存的搭建者
需要我们配置一下,关于FastJsonRedisSerializer我重写了它的方法,具体请看demo演示,对于序列化可能会遇到的问题
@Configuration
public class MyRedisConfig {
@Bean(name = "redisTemplate")
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
RedisTemplate<Object, Object> template = new RedisTemplate<Object, Object>();
template.setConnectionFactory(redisConnectionFactory);
ParserConfig.getGlobalInstance().addAccept("com.atguigu.cache.bean");
FastJsonRedisSerializer fastJsonRedisSerializer = new FastJsonRedisSerializer(Object.class);
template.setDefaultSerializer(fastJsonRedisSerializer);
return template;
}
@Bean(name = "redisCacheManager")
public RedisCacheManager redisCacheManager(RedisTemplate redisTemplate) {
RedisCacheManager cacheManager = new RedisCacheManager(redisTemplate);
cacheManager.setUsePrefix(true);
cacheManager.setDefaultExpiration(120);
return cacheManager;
}
@Bean("myKeyGenerator")
public KeyGenerator keyGenerator(){
return new KeyGenerator(){
@Override
public Object generate(Object target, Method method, Object... params) {
return method.getName()+"["+ Arrays.asList(params).toString()+"]";
}
};
}
}
最后你可能要自己操作redis,那么建议你使用demo里面的RedisUtil来进行操作。
如果有什么问题,欢迎大家提问哈。