项目正常创建 建好之后
在application文件加入 此处为yml,properties同理
redis:
database: 0
host: 1.117.92.19
port: 6379
#连接超时时间 单位 ms(毫秒)
timeout: 3000
导入pom唯一依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
配置缓存
package com.test.config;
import java.lang.reflect.Method;
import org.apache.log4j.Logger;
import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
import org.springframework.data.redis.core.Redistemplate;
@Configuration
@EnableCaching
public class CacheConfig{
private static final Logger log = Logger.getLogger(CacheConfig.class);
@Bean
public JedisConnectionFactory redisConnectionFactory() {
JedisConnectionFactory redisConnectionFactory = new JedisConnectionFactory();
redisConnectionFactory.setHostName("127.0.0.1");
redisConnectionFactory.setPort(6379);
return redisConnectionFactory;
}
@Bean
public Redistemplate<String, String> redistemplate(RedisConnectionFactory cf) {
Redistemplate<String, String> redistemplate = new Redistemplate<String, String>();
redistemplate.setConnectionFactory(cf);
return redistemplate;
}
@Bean
public CacheManager cacheManager(Redistemplate redistemplate) {
RedisCacheManager cacheManager = new RedisCacheManager(redistemplate);
//这里可以设置一个默认的过期时间
cacheManager.setDefaultExpiration(300);
return cacheManager;
}
@Bean
public KeyGenerator customKeyGenerator() {
return new KeyGenerator() {
@Override
public Object generate(Object o, Method method, Object... params) {
StringBuilder sb = new StringBuilder();
sb.append(o.getClass().getName());
sb.append(method.getName());
for (Object obj : params) {
sb.append(obj.toString());
}
return sb.toString();
}
};
}
}
接口实现类添加注解
package com.test.service.impl;
@Service
public class UserServiceImpl implements UserService{
@CachePut(cacheNames="user",key="#result.id")
@Cacheevict(cacheNames="countUser" ,allEntries = true)
@Override
public User addUser(User user) {
userDao.add(user);
return user;
}
addUser()方法有两个注解,@CachePut(cacheNames=”user”,key=”#result.id”)表示,执行前不会去检查缓存中是否存在之前执行过的结果,而是每次都会执行该方法,并将执行结果以键值对的形式存入指定的缓存中。可以是添加用户之后直接加入缓存,并且指定key是返回值的id。则下次使用该id去查询user的时候可以直接从缓存中获取。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。