SpringBoot2.0 与Redis 结合

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 redisTemplate(RedisConnectionFactory redisConnectionFactory) {    RedisTemplate template =newRedisTemplate<>();
    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单机版作为缓存工具

你可能感兴趣的