为了账号安全,请及时绑定邮箱和手机立即绑定

SpringBoot | 第十一章:Redis的集成和简单使用

标签:
SpringBoot

前言

上几节讲了利用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
 *
 */@Configurationpublic 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值


webp

set值

get值


webp

get值



作者:oKong
链接:https://www.jianshu.com/p/b21110f86f0a


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消