Spring Boot Redis配置
Spring Boot除了对对常用的关系型数据库提供支持以外,还对非关系型数据库进行了自动化配置。
使用redis结合spring cache是一个非常棒的组合
cache使用方便,但还是使用JVM内存了缓存对象
redis是独立的缓存服务器,使用单纯的内存来做缓存
所以他们结合后可以很方便的进行缓存并且不影响JVM的内存性能
接下来我会教大家如何在Spring Boot整合Redis。
Redis简单介绍:
redis是一个开源的的日志型、key-value键值对数据库。
它有三个特点:
1.redis将数据存放在内存中,也可以将数据持久化到磁盘;
2.与其他键值对数据存储相比,它还有string、hash、set、sortedset、list等数据结构;
3.支持主从复制
redis在Spring Boot上的配置很简单:
第一步:添加maven依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-redis</artifactId>
</dependency>
第二步:参数配置
这里我们在application.properties(.yxml也可以)中进行配置:
# Redis数据库索引(默认为0)
spring.redis.database=0
# Redis服务器地址
spring.redis.host=localhost
# Redis服务器连接端口
spring.redis.port=6379
# Redis服务器连接密码(默认为空)
spring.redis.password=
# 连接池最大连接数(使用负值表示没有限制)
spring.redis.pool.max-active=8
# 连接池最大阻塞等待时间(使用负值表示没有限制)
spring.redis.pool.max-wait=-1
# 连接池中的最大空闲连接
spring.redis.pool.max-idle=8
# 连接池中的最小空闲连接
spring.redis.pool.min-idle=0
# 连接超时时间(毫秒)
spring.redis.timeout=0
第三步:实际操作
测试代码(毫无意义):
@Autowired
private StringRedisTemplate<String,String> stringRedisTemplate;
@RequestMapping("/set")
@ResponseBody
public String set(){
redisTemplate.opsForValue().set("key","value");
return "success";
}
@RequestMapping("/get")
@ResponseBody
public String get(){
return redisTemplate.opsForValue().get("key");
}
这时候你也许会问:怎么只能存入String,不是说可以存入复杂的数据结构吗?
别急,看下面的代码,我来实现把一个User实体存入redis:
@Autowired
private RedisTemplate<String,String> redisTemplate;
@Resource(name = "redisTemplate")
private ValueOperations<String,Object> valueOperations;
public void test(){
User user = new User("testName","testPassword");
valueOperations.set("user",user);
boolean exist = redisTemplate.hasKey("user");
if(exist){
System.out.println("exist");
}else{
System.out.printf("no exist");
}
}
以上例子就可以把User存入redis中。
除了ValueOperations,还有ListOperations,SetOperations,ZSetOperations,HashOperations
下面我会贴出工具类,方便大家大家使用:
第四步:工具类
package cm.cn.util;
import java.util.Collection;
import java.util.Set;
import javax.annotation.Resource;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.HashOperations;
import org.springframework.data.redis.core.ListOperations;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.SetOperations;
import org.springframework.data.redis.core.ValueOperations;
import org.springframework.data.redis.core.ZSetOperations;
import org.springframework.stereotype.Component;
@Component
public final class RedisUtil {
@Autowired
private RedisTemplate<String, String> redisTemplate;
@Resource(name = "redisTemplate")
private ValueOperations<String, Object> valueOps;
@Resource(name = "redisTemplate")
private ListOperations<String, String> listOps;
@Resource(name = "redisTemplate")
private SetOperations<String, String> setOps;
@Resource(name = "redisTemplate")
private ZSetOperations<String, String> zsetOps;
@Resource(name = "redisTemplate")
private HashOperations<String, String, String> hashOps;
public void setValue(String key, Object value) {
valueOps.set(key, value);
}
public Object getValue(String key) {
return valueOps.get(key);
}
//返回值为设置成功的value数
public Long setSet(String key, String... value) {
return setOps.add(key, value);
}
//返回值为redis中键值为key的value的Set集合
public Set<String> getSetMembers(String key) {
return setOps.members(key);
}
public Boolean setZSet(String key, String value, double score) {
return zsetOps.add(key, value, score);
}
public Double getZSetScore(String key, String value) {
return zsetOps.score(key, value);
}
public void deleteKey(String key) {
redisTemplate.delete(key);
}
public void deleteKeys(Collection<String> keys) {
redisTemplate.delete(keys);
}
}
以上便是Redis在SpringBoot上的使用。
觉得还可以的请点个赞,赞不了也可以收藏下
还有更精彩的文章呈现给大家,请关注作者
谢谢阅读~