欢迎访问昆山宝鼎软件有限公司网站! 设为首页 | 网站地图 | XML | RSS订阅 | 宝鼎邮箱 | 后台管理


新闻资讯

MENU

软件开发知识
原文出处: oKong

媒介

上几节讲了操作Mybatis-Plus这个第三方的ORM框架举办数据库会见,在实际事情中,在存储一些非布局化可能缓存一些姑且数据及热点数据时,一般上城市用上mongodbredis举办这方面的需求。所以这一章节筹备讲下缓存数据库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值set值

get值
get值get值

欣赏器会见

 //@Transactional(rollbackF  <a href=苏州软件定制开拓 or = Exception.class) public MapString" src="/uploads/allimg/c180824/15350545bAL0-355P.jpg" />

 //@Transactional(rollbackF  <a href=苏州软件定制开拓 or = Exception.class) public MapString" src="/uploads/allimg/c180824/15350545bKX0-495G.jpg" />

查察redis记录:

redis记录redis记录