1、pom添加依赖
<dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </dependency> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.9.0</version> </dependency> <dependency> <groupId>commons-lang</groupId> <artifactId>commons-lang</artifactId> <version>2.5</version> </dependency> <dependency> <groupId>com.google.collections</groupId> <artifactId>google-collections</artifactId> <version>1.0</version> </dependency>
这四个依赖的作用,第一个是集成redis,第二个集成jedis,第三个和第四个是封装jedis工具类的实现,以后我们可以直接调用操作redis就好,非常方便,大多数公司开发用的就是这种方案。
2、配置文件redis
记住timeout和wait后面要加ms,这是springboot2.0的特性,不然会出现红色标记错误,不和以前1.X一样只写一个数字就可以了
spring.redis.database=0 spring.redis.host=localhost spring.redis.port=6379 spring.redis.password= spring.redis.timeout=10000ms spring.redis.jedis.pool.max-active=8 spring.redis.jedis.pool.max-wait=-1ms spring.redis.jedis.pool.min-idle=0 spring.redis.jedis.pool.max-idle=8
3、配置类config
@Configuration
@EnableCaching
public class RedisCacheConfiguration extends CachingConfigurerSupport {
Logger logger = LoggerFactory.getLogger(RedisCacheConfiguration.class);
@Value("${spring.redis.host}")
private String host;
@Value("${spring.redis.port}")
private int port;
@Value("${spring.redis.timeout}")
private String timeout;
@Value("${spring.redis.jedis.pool.max-idle}")
private int maxIdle;
@Value("${spring.redis.jedis.pool.max-wait}")
private String maxWaitMillis;
@Value("${spring.redis.password}")
private String password;
@Bean
public JedisPool redisPoolFactory() {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
jedisPoolConfig.setMaxIdle(maxIdle);
jedisPoolConfig.setMaxWaitMillis(Long.valueOf(maxWaitMillis.substring(0,maxWaitMillis.length()-2)));
JedisPool jedisPool = new JedisPool(jedisPoolConfig, host, port, Integer.valueOf(timeout.substring(0,timeout.length()-2)));
return jedisPool;
}
}
4、jedis的service的封装
public interface ICacheService {
/**
* 设置键值
* @param key
* @param value
* @return
*/
String set(String key, String value);
/**
*
* @param key
* @param increament
* @return
*/
Long incrBy(String key, long increament);
}
@Component
public class CacheSingleService implements ICacheService {
@Autowired
private JedisPool jedisPool;
public String set(String key, String value){
Jedis jedis = null;
try {
jedis = getResource();
return jedis.set(key, value);
} finally {
returnResource(jedis);
}
}
public Long incrBy(String key, long increament) {
Long i = null;
Jedis jedis = null;
try {
jedis = getResource();
i = jedis.incrBy(key, increament);
} catch (Exception e) {
e.printStackTrace();
} finally {
returnResource(jedis);
}
return i;
}
}
}
@Component
public class CacheService {
private static final String PLATFORM_KEY_PRE = "DTB_";
@Autowired
private CacheSingleService cacheSingleService;
private ICacheService cacheService;
@PostConstruct
private void init(){
this.cacheService = cacheSingleService;
}
protected String getStrKey(String key){
String result = PLATFORM_KEY_PRE+key;
return result;
}
public void set(String key, String value) throws Exception{
key = getStrKey(key);
cacheService.set(key, value);
}
public Long incrBy(String key, long increament){
key = getStrKey(key);
return cacheService.incrBy(key, increament);
}
}
并没有把所有的servie里面设计redis的所有方法写出来,写出两个大概步骤就好了
5、测试
写controller,以后我们直接调用CacheService就好了,直接使用redis的方法,因为我们刚刚在service中封装了设计redis的所有方法,上面是两个,但是公司中会封装几十个
@Autowired
CacheService cacheService;
@RequestMapping(value = "/redis/test2")
public String test2() throws Exception {
cacheService.set("mjt01","测试jedis");
return cacheService.get("mjt01");
}

测试成功!
来源:oschina
链接:https://my.oschina.net/u/3209213/blog/1853966