• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

springboot整合redis

武飞扬头像
leyasuzhou
帮助1

对于java,常用的客户端有:

        Jedis,springDataRedis,Redission

Jedis:操作简单,适合入门

SpringDataRedis: spring必备,可以通过yml进行相应配置

Redission: Redis的分布式

本篇重点还是讲讲SpringDataRedis

首先,导入spring-data-redis依赖:

  1.  
    <!-- spring-data-redis-->
  2.  
    <dependency>
  3.  
    <groupId>org.springframework.boot</groupId>
  4.  
    <artifactId>spring-boot-starter-data-redis</artifactId>
  5.  
    </dependency>

为了提升redis的性能,我们最好添加一下pool:

  1.  
    <dependency>
  2.  
    <groupId>org.apache.commons</groupId>
  3.  
    <artifactId>commons-pool2</artifactId>
  4.  
    </dependency>

依赖引入完毕,开始配置yml

  1.  
    spring:
  2.  
    # redis配置
  3.  
    redis:
  4.  
    #Redis服务器地址
  5.  
    host:
  6.  
    #Redis服务器连接端口
  7.  
    port: 6379
  8.  
    #Redis数据库索引(默认为0)
  9.  
    database: 0
  10.  
    #连接超时时间(毫秒)
  11.  
    timeout: 1800000
  12.  
    lettuce:
  13.  
    pool:
  14.  
    max-active: 8 # 最大连接数
  15.  
    max-idle: 8 #最大空闲连接
  16.  
    min-idle: 0 #最小空闲连接
  17.  
    max-wait: 100 #连接等待时间
学新通

整合完毕,就可以基本的使用它了,来个简单小test

学新通

 spring-data-redis提供一个RedisTemple对象来提供具体方法来进行具体的redis操作

对Sting的操作和对hash的操作:

学新通

自定义RedisTemple的序列化规则

学新通

 spring-data-redis它是可以对redistemple进行自定义的,这样我们就可以对Redistemple进行自定义的序列化规则

  1.  
    @Bean
  2.  
    public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory)
  3.  
    {
  4.  
    RedisTemplate<Object, Object> template = new RedisTemplate<>();
  5.  
    template.setConnectionFactory(connectionFactory);
  6.  
     
  7.  
    FastJsonRedisSerializer serializer = new FastJsonRedisSerializer(Object.class);
  8.  
     
  9.  
    // 使用StringRedisSerializer来序列化和反序列化redis的key
  10.  
    template.setKeySerializer(new StringRedisSerializer());
  11.  
    // 值用Json来进行序列化value
  12.  
    template.setValueSerializer(serializer);
  13.  
     
  14.  
    // Hash的key也采用StringRedisSerializer的序列化方式
  15.  
    template.setHashKeySerializer(new StringRedisSerializer());
  16.  
    template.setHashValueSerializer(serializer);
  17.  
     
  18.  
    template.afterPropertiesSet();
  19.  
    return template;
  20.  
    }
学新通

我们可以将对象Json序列化,进行存储,但是,这样有什么缺点呢?我们来看:

在redis中,我们看到保存的Json序列化的对象多了一行

@class:com.example.pojo.People

这是因为为了在反序列化时,能知道最后反序列化出来的是哪个对象。

这样的缺点是:当数据量增大时,内存的花销很大!这显然是不经济的。

所以我们在自定义序列化规则的时候,应该将对象转成String,再保存

之后再调用Json转对象工具,转回来。

学新通

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhibhgai
系列文章
更多 icon
同类精品
更多 icon
继续加载