媒介
上几节讲了操作
Mybatis-Plus这个第三方的ORM框架举办数据库会见,在实际事情中,在存储一些非布局化可能缓存一些姑且数据及热点数据时,一般上城市用上mongodb和redis举办这方面的需求。所以这一章节筹备讲下缓存数据库Redis的集成,同时会先容下基于Redis和注解驱动的Spring Cache的简朴利用。
Redis 先容
各人应该对
Redis应该较量熟悉了。这几年也是大行其道的缓存数据库,今朝的memcached由于利用场景及其存储数据布局的单一(不知道此刻是否有改进,此刻根基没有打仗了),在事情中也利用的少了。引用官网的简介,Redis是一个开源的利用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可耐久化的日志型、Key-Value数据库,并提供多种语言的API。
推荐redis中国社区:http://www.redis.cn/
SpringBoot的Redis集成
0.本章节以上一章节的示例基本长举办集成。所以各人可下载第十章节示例可能在章节末端直接下载本章节示例。
1.pom依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
直接引入,相关依赖会自动加载的,这就是springboot让人愉悦之处呀。
2.application.properties设置插手redis相关设置
设置自动加载类为:
org.springframework.boot.autoconfigure.data.redis.RedisProperties,可在属性文件中点击某属性快捷跳转。留意到其启动类为org.springframework.boot.autoconfigure.data.redis.RedisAutoConfiguration。这里就不先容了,后头会写一篇关于Springboot自动加载设置的文章。
# REDIS (RedisProperties) # Redis数据库索引(默认为0) spring.redis.database=0 # Redis处事器地点 spring.redis.host=127.0.0.1 # 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
3.一般上通过以上两步就可利用了,但事情中一般上是通过StringRedisTemplate(默认回收string的序列化,生存key和值时都是通过此序列化计策)接口举办操纵,所以这里直接设置了StringRedisTemplatebean类。
RedisConfig.java
/**
*
* @author oKong
*
*/
@Configuration
public class RedisConfig {
/**
* 界说 StringRedisTemplate ,指定序列化和反序列化的处理惩罚类
* @param factory
* @return
*/
@Bean
public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
StringRedisTemplate template = new StringRedisTemplate(factory);
Jackson2JsonRedisSerializer<Object> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(
Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
//序列化 值时利用此序列化要领
template.setValueSerializer(jackson2JsonRedisSerializer);
template.afterPropertiesSet();
return template;
}
}
4.编写节制类,测试集成是否生效。
RedisController.java
@RestController
@RequestMapping("/redis")
@Api(tags = "redis 测试API")
public class RedisController {
@Autowired
StringRedisTemplate redisTemplate;
@GetMapping("set/{key}/{value}")
@ApiOperation(value="配置缓存")
public String set(@PathVariable("key")String key,@PathVariable("value") String value) {
//留意这里的 key不能为null spring 内部有检讨
redisTemplate.opsForValue().set(key, value);
return key + "," + value;
}
@GetMapping("get/{key}")
@ApiOperation(value="按照key获取缓存")
public String get(@PathVariable("key") String key) {
return "key=" + key + ",value=" + redisTemplate.opsForValue().get(key);
}
}
5.会见:http://127.0.0.1:8080/swagger-ui.html。 也可直接欣赏器输入:
set值
set值
get值
get值
欣赏器会见
苏州软件定制开拓 or = Exception.class) public MapString" src="/uploads/allimg/c180824/15350545bAL0-355P.jpg" />
苏州软件定制开拓 or = Exception.class) public MapString" src="/uploads/allimg/c180824/15350545bKX0-495G.jpg" />
查察redis记录:
redis记录