spring Boot 项目中加入redis
集成redis
- 新建springboot项目
- 引入redis依赖:spring-boot-starter-data-redis
- 配置文件中配置相关属性
pom.xml引入依赖
新建项目后,在pom.xml中引入redis依赖 spring-boot-starter-data-redis
,pom.xml完整依赖如下:
<dependencies>
<!--Redis 依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!-- web 依赖-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.1</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
配置文件
spring:
redis:
port: 6379
host: 127.0.0.1
springboot中提供了两个redis操作的api:RedisTemplate,StringRedisTemplate
使用StringRedisTemplate编写一个工具类
/**
* @auther: chenmingyu
* @date: 2018/11/11 12:04
* @description: redis工具类
*/
@Component("redisUtils")
public class RedisUtils {
@Resource
private StringRedisTemplate stringRedisTemplate;
/**
* 获取key
* @param key
* @return
*/
public String get(String key){
try {
if(StringUtils.isBlank(key)){
return null;
}
return stringRedisTemplate.opsForValue().get(key);
}catch (Exception e){
System.out.println(String.format("获取字符串异常! key :%s",key));
e.printStackTrace();
}
return null;
}
/**
* 设置key
* @param key
* @param value
*/
public Boolean set(String key,String value){
try {
if(StringUtils.isBlank(key)||StringUtils.isBlank(value)){
return false;
}
stringRedisTemplate.opsForValue().set(key,value);
return true;
}catch (Exception e){
System.out.println(String.format("设置字符串异常! key :%s ,value:%s",key,value));
e.printStackTrace();
}
return false;
}
/**
* 删除key
* @param key
*/
public Boolean delete(String key){
try {
if(StringUtils.isBlank(key)){
return false;
}
return stringRedisTemplate.delete(key);
}catch (Exception e){
System.out.println(String.format("删除key异常! key :%s ",key));
e.printStackTrace();
}
return false;
}
/**
* 设置缓存,时间单位为秒
* @param key
* @param value
* @param time
* @return
*/
public Boolean setEX(String key,String value,Long time){
try {
if(StringUtils.isBlank(key)||StringUtils.isBlank(value)){
return false;
}
stringRedisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);
return true;
}catch (Exception e){
System.out.println(String.format("设置缓存异常! key :%s ,value:%s,times:%s",key));
e.printStackTrace();
}
return false;
}
/**
* 获取key缓存时间,时间单位为秒
* @param key
* @return
*/
public Long getExpireTime(String key){
try {
if(StringUtils.isBlank(key)){
return null;
}
return stringRedisTemplate.getExpire(key,TimeUnit.SECONDS);
}catch (Exception e){
System.out.println(String.format("获取key缓存时间异常! key :%s",key));
e.printStackTrace();
}
return null;
}
}
StringRedisTemplate继承自RedisTemplate,StringRedisTemplate中的所有数据类型都是字符串类型,比如key,value,list,hash,set里存的元素都是字符串,与RedisTemplate不同的是StringRedisTemplate改变了序列化方式,StringRedisTemplate使用StringRedisSerializer序列化key,value,List,Hash,Set等数据结构中的元素。
使用junit测试
@RunWith(SpringRunner.class)
@SpringBootTest
public class SpringbootRedisApplicationTests {
@Resource
private RedisUtils redisUtils;
@Test
public void testSet() {
Boolean flag = redisUtils.set("mingyu","mingyu");
System.out.println("testSet:"+flag);
}
@Test
public void testGet() {
String value = redisUtils.get("mingyu");
System.out.println("testGet:"+value);
}
@Test
public void testDelete() {
Boolean flag = redisUtils.delete("mingyu");
System.out.println("testDelete:"+flag);
}
@Test
public void testSetEX() {
Boolean flag = redisUtils.setEX("mingyu","cmy",1000L);
System.out.println("testSetEX:"+flag);
}
@Test
public void testGetExpireTime() {
Long time = redisUtils.getExpireTime("mingyu");
System.out.println("testSetEX:"+time);
}
}