依赖如下:
<
dependency
>
<
groupId
>
org.springframework.boot
</
groupId
>
<
artifactId
>
spring-boot-starter-data-redis
</
artifactId
>
</
dependency
>
配置文件如下:
spring:
redis:
open:
true
#
是否开启
redis
缓存
true
开启
false
关闭
database:
0
host:
47.104.208.124
port:
6378
password:
lf.1228
#
密码(默认为空)
timeout:
6000
#
连接超时时长(毫秒)
pool:
max-active:
1000
#
连接池最大连接数(使用负值表示没有限制)
max-wait:
-1
#
连接池最大阻塞等待时间(使用负值表示没有限制)
max-idle:
10
#
连接池中的最大空闲连接
min-idle:
5
#
连接池中的最小空闲连接
RedisConfig类:
@Configuration
public class
RedisConfig {
@Autowired
private
RedisConnectionFactory
factory
;
@Bean
public
RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> redisTemplate =
new
RedisTemplate<>();
redisTemplate.setKeySerializer(
new
StringRedisSerializer());
redisTemplate.setHashKeySerializer(
new
StringRedisSerializer());
redisTemplate.setHashValueSerializer(
new
StringRedisSerializer());
redisTemplate.setValueSerializer(
new
StringRedisSerializer());
redisTemplate.setConnectionFactory(
factory
);
return
redisTemplate;
}
@Bean
public
HashOperations<String, String, Object> hashOperations(RedisTemplate<String, Object> redisTemplate) {
return
redisTemplate.opsForHash();
}
@Bean
public
ValueOperations<String, String> valueOperations(RedisTemplate<String, String> redisTemplate) {
return
redisTemplate.opsForValue();
}
@Bean
public
ListOperations<String, Object> listOperations(RedisTemplate<String, Object> redisTemplate) {
return
redisTemplate.opsForList();
}
@Bean
public
SetOperations<String, Object> setOperations(RedisTemplate<String, Object> redisTemplate) {
return
redisTemplate.opsForSet();
}
@Bean
public
ZSetOperations<String, Object> zSetOperations(RedisTemplate<String, Object> redisTemplate) {
return
redisTemplate.opsForZSet();
}
}
RedisUtils如下:
@Component
public class
RedisUtils {
@Autowired
private
RedisTemplate<String, Object>
redisTemplate
;
@Autowired
private
ValueOperations<String, String>
valueOperations
;
@Autowired
private
HashOperations<String, String, Object>
hashOperations
;
@Autowired
private
ListOperations<String, Object>
listOperations
;
@Autowired
private
SetOperations<String, Object>
setOperations
;
@Autowired
private
ZSetOperations<String, Object>
zSetOperations
;
/**
默认过期时长,单位:秒
*/
public final static long
DEFAULT_EXPIRE
=
60
*
60
*
24
;
/**
不设置过期时长
*/
public final static long
NOT_EXPIRE
= -
1
;
private final static
Gson
gson
=
new
Gson();
public void
set(String key, Object value,
long
expire){
valueOperations
.set(key, toJson(value));
if
(expire !=
NOT_EXPIRE
){
redisTemplate
.expire(key, expire, TimeUnit.
SECONDS
);
}
}
public void
set(String key, Object value){
set(key, value,
DEFAULT_EXPIRE
);
}
public
<
T
>
T
get(String key, Class<
T
> clazz,
long
expire) {
String value =
valueOperations
.get(key);
if
(expire !=
NOT_EXPIRE
){
redisTemplate
.expire(key, expire, TimeUnit.
SECONDS
);
}
return
value ==
null
?
null
: fromJson(value, clazz);
}
public
<
T
>
T
get(String key, Class<
T
> clazz) {
return
get(key, clazz,
NOT_EXPIRE
);
}
public
String get(String key,
long
expire) {
String value =
valueOperations
.get(key);
if
(expire !=
NOT_EXPIRE
){
redisTemplate
.expire(key, expire, TimeUnit.
SECONDS
);
}
return
value;
}
public
String get(String key) {
return
get(key,
NOT_EXPIRE
);
}
public void
delete(String key) {
redisTemplate
.delete(key);
}
/**
* Object
转成
JSON
数据
*/
private
String toJson(Object object){
if
(object
instanceof
Integer || object
instanceof
Long || object
instanceof
Float ||
object
instanceof
Double || object
instanceof
Boolean || object
instanceof
String){
return
String.
valueOf
(object);
}
return
gson
.toJson(object);
}
/**
* JSON
数据,转成
Object
*/
private
<
T
>
T
fromJson(String json, Class<
T
> clazz){
return
gson
.fromJson(json, clazz);
}
}
springboot如何封装redis:
RedisTemplate
所在包: org.springframework.data.redis.core
作用:redis模板,redis事务,序列化支持,操作redis方法
JedisConnectionFactory
所在包:org.springframework.data.redis.connection.jedis
作用:redis连接工厂类,创建redis连接池等
RedisAutoConfiguration
所在包:org.springframework.boot.autoconfigure.data.redis
作用:将redis配置文件相关信息注入工厂类
RedisProperties
所在包:org.springframework.boot.autoconfigure.data.redis
作用:redis连接基础类通过@ConfigurationProperties注解将配置信息注入属性