媒介
上几节讲了操作
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和值时都是通过此序列化计策)接口举办操纵,所以这里直接设置了StringRedisTemplate
bean类。
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记录