###1.添加redis依赖 ###
添加spring-boot-starter-data-redis依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
本文会根据StringRedisTemplate、RedisTemplate这两个模板来介绍,其中StringRedisTemplate继承自RedisTemplate,只能操作键值都是String类型的数据。在实际开发中建议使用RedisTemplate
查询源码可知RedisTemplate默认使用JdkSerializationRedisSerializer序列化,而StringRedisTemplate则使用StringRedisSerializer。
2.配置redis
在application.yml中配置如下:
#REDIS
spring:
redis:
database: 1
# Redis服务器地址
host: xxx.xxx.x.xxx
# Redis服务器连接端口
port: 6379
# Redis服务器连接密码(默认为空)
password:
pool:
# 连接池最大连接数(使用负值表示没有限制)
max-idle: 8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
min-idle: 0
# 连接池中的最大空闲连接
max-active: 8
# 连接池中的最小空闲连接
max-wait: -1
# 连接超时时间(毫秒)
timeout: 5000
3.编写代码###
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.stereotype.Service;
@Service
public class RedisService
{
@Autowired
StringRedisTemplate stringRedisTemplate;
/*向RedisService中注入ValueOperations,同时向ValueOperations中注入
stringRedisTemplate,ValueOperations特有写法,此处只能用@Resource注解*/
@Resource(name = "stringRedisTemplate")
ValueOperations<String, String> valOpsStr;
@Autowired
RedisTemplate<Object, Object> redisTemplate;
@Resource(name = "redisTemplate")
ValueOperations<Object, Object> valOpsObj;
/**
* 根据指定key获取String
* @param key
* @return
*/
public String getStr(String key) throws Exception{
return valOpsStr.get(key);
}
/**
* 设置Str缓存
* @param key
* @param val
*/
public void setStr(String key, String val)throws Exception{
valOpsStr.set(key,val);
}
/**
* 删除指定key
* @param key
*/
public void del(String key)throws Exception{
stringRedisTemplate.delete(key);
}
/**
* 根据指定o获取Object
* @param o
* @return
*/
public Object getObj(Object o)throws Exception{
return valOpsObj.get(o);
}
/**
* 设置obj缓存
* @param o1
* @param o2
*/
public void setObj(Object o1, Object o2)throws Exception{
valOpsObj.set(o1, o2);
}
/**
* 删除Obj缓存
* @param o
*/
public void delObj(Object o)throws Exception{
redisTemplate.delete(o);
}
}