springboot和redis整合

大家好,我是IT修真院深圳分院第十三期学员,一枚正直纯洁善良的JAVA程序员。
今天给大家分享一下,修真院官网JAVA任务四里面的一个扩展:springboot和redis整合。

1 背景介绍
1.1 redis是什么?
REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。
Redis是一个开源的使用ANSI C语言编写、遵守BSD协议、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
1.2 为什么使用redis?
当访问量大的时候,使用redis作为缓存系统,可以将已经查询到的数据缓存到redis之中,从而下次访问直接访问缓存层,避免对底层数据库的过多查询造成太大压力,除此之外,由于redis是一个nosql的内存数据库,其访问速度会比直接访问oracle和mysql的数据库快很多。
2 知识剖析
2.1 redis的特点
1、redis支持字符串(String), 哈希(Map), 列表(list), 集合(sets) 和 有序集合(sorted sets)等类型。

2、速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)

3、支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行

4、丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除

2.2 redis相对于memcache的优势
1、memcache只支持简单的key/value,redis支持更多的数据类型

2、Redis支持数据的备份,即master-slave模式的数据备份。

3、Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用

3.常见问题

springboot和redis整合时出现版本不一致

4 解决方案
Spring Boot 1.4 以上 2.0 以下使用 maven spring-boot-starter-redis 依赖需要手动定义依赖版本

Spring Boot 2.0 的 spring-boot-starter-redis 改名为了 spring-boot-starter-data-redis, 所以引入的依赖不同。

<!-- Spring Boot使用的是1.4(包括1.4版本)之前的版本使用如下配置 -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-redis</artifactId>
</dependency>
<!-- 1.5.* 的版本需要指定版本号 -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-redis</artifactId>
   <version>1.4.6.RELEASE</version>
</dependency>
<!-- 2.* 版本 redis依赖改名了,直接使用下面的依赖 -->
<dependency>
   <groupId>org.springframework.boot</groupId>
   <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

5.编码实战

6.扩展思考

7.参考文献
CSDN、百度百科

8 更多讨论
1、springboot使用redis如何更改序列化工具
如果要更改序列化工具,那么需要自定义config类 :
如:

    @Bean
    public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
        StringRedisTemplate template = new StringRedisTemplate(factory);
        Jackson2JsonRedisSerializer 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;
    }

2、如何搭建分布式redis
redis使用的master-slave的集群方式,即主从集群。
3、分布式下如何存储session
分布式session的话,主要有2种方式,一种将所有session存入一个redis里面,或者按ip固定存session。一种是使用redis集群同步。
今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

技能树.IT修真院

“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。

快来与我一起学习吧~ http://www.jnshu.com/login/1/45664133

腾讯视频:https://v.qq.com/x/page/p0774w860qt.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值