SpringBoot2.0与Redis 结合
Redis的优势
1、性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。
2、丰富的数据类型 – Redis支持二进制案例的 Strings, Lists, Hashes, Sets 及 Ordered Sets数据类型操作。
3、原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。单个操作是原子性的。多个操作也支持事务,即原子性,通过MULTI和EXEC指令包起来。
4、丰富的特性 – Redis还支持publish/subscribe, 通知, key 过期等等特性。
Redis可作为数据库,可降低数据IO的读操作,减轻IO的压力。可以减少CPU和内存的压力。并且可以修改表结构,特殊对待某一条数据。并且Redis是NoSQL,读取速度快,对于较大数据处理快。
Redis做缓存,可用于高频次访问的数据;也可用于分布式架构中session共享。
搭建步骤:
一、采用IDEA搭建Springboot项目,并引入redis所需的依赖。
如下:
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-data-redisartifactId>
<version>2.0.0.RELEASEversion>
dependency>
<dependency>
<groupId>org.springframework.bootgroupId>
<artifactId>spring-boot-starter-redisartifactId>
dependency>
二、配置Redis数据源信息
server.port=1104
server.tomcat.uri-encoding=UTF-8
_#################redis__基础配置###################
# 数据库设置
_spring.redis.database=**5
**_#__宿主机IP
_spring.redis.host=**localhost
**_#__端口号
_spring.redis.port=**6379
**_#__密码
_spring.redis.password=**jane@2018
**_#__连接超时时间 单位 ms(毫秒)
_spring.redis.timeout=**3000
**_#################redis__线程池设置#################
# 连接池中的最大空闲连接,默认值也是8。
_spring.redis.jedis.pool.max-idle=**500
**_#__连接池中的最小空闲连接,默认值也是0。
_spring.redis.jedis.pool.min-idle=**50
**_#__如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted(耗尽)。
_spring.redis.jedis.pool.max-wait=**2000
**_#__等待可用连接的最大时间,单位毫秒,默认值为-1,表示永不超时。如果超过等待时间,则直接抛出JedisConnectionException
_spring.redis.jedis.pool.max-active=1000
引入fastjson的目的之一为 redis默认的key序列化使用的是JdkSerializationRedisSerializer会导致一些key不是正常字符
创建一个redisConfig配置类 添加注解:
@Configuration
@AutoConfigureAfter(RedisAutoConfiguration.class)
这两个注解代表着 将我们编写的redisConfig作为一个配置类注入到容器中,第二个注解的作用是我们自己编写的配置类 要在springboot自动注入redis相关类之后注入,这样做的目的是防止我们自己编写的配置类被覆盖。
_/**
*__配置自定义redisTemplate
***@return
***/
_@Bean
RedisTemplate
template.setConnectionFactory(redisConnectionFactory);
_//__使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值
_Jackson2JsonRedisSerializer serializer =newJackson2JsonRedisSerializer(Object.class);
ObjectMapper mapper =newObjectMapper();
mapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
mapper.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
serializer.setObjectMapper(mapper);
template.setValueSerializer(serializer);
_//__使用StringRedisSerializer来序列化和反序列化redis的key值
_template.setKeySerializer(newStringRedisSerializer());
template.setHashKeySerializer(newStringRedisSerializer());
template.setHashValueSerializer(serializer);
template.afterPropertiesSet();
returntemplate;
}
上段代码中是我们使用fastjson来进行key序列化。具体的可以在springboot官方文档 或是源码中找到相对应的地方。我们只是作出自己需要的修改。之后编写一个测试用例即可进行 本节主要讲解springboot 使用redis单机版作为缓存工具