• springboot系列十、springboot整合redis、多redis数据源配置


    一、简介

    Redis 的数据库的整合在 java 里面提供的官方工具包:jedis,所以即便你现在使用的是 SpringBoot,那么也继续使用此开发包。

    二、redidTemplate操作

    在 Spring 支持的 Redis 操作之中提供有一个 RedisTemplate 处理程序类,利用这个类可以非常方便的实现 Redis 的各种基本数 据操作。

    1、引入依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>

    2、配置yml

    spring:  
      redis:
        host: 47.52.199.52
        port: 6379
        password: 123456
        timeout: 1000
        database: 0
        jedis:
          pool:
            max-active: 4
            max-idle: 8
            min-idle: 2
            max-wait: 100

    3、使用示例

    @RunWith(SpringRunner.class)
    @SpringBootTest
    @WebAppConfiguration
    public class DemoApplicationTests {

    @Resource
    private RedisTemplate<String, String> redisTemplate; @Test public void testRedis(){ redisTemplate.opsForValue().set("xing","12345678"); System.out.println(redisTemplate.opsForValue().get("xing")); } }

     三、配置多个Redis

      由于在项目的实际开发过程之中 Redis 的使用会非常的频繁, 那么就有可能出现这样一种问题:现在的项目里面要求连接两 个 Redis 数据库。SpringBoot 里面针对于 Redis 的连接配置本质上只提供有一个连接配置项,那么如果你真的需要进行更多的 Redis 的连接配置,那么就需要自己来进行 Redis 的创建管理了。相当于直接使用spring-data-redis。

    1、引入依赖

    <dependency>
        <groupId>redis.clients</groupId>
        <artifactId>jedis</artifactId>
        <version>2.9.0</version>
    </dependency>

    2、配置yml

    spring:
        redis-two:
        host: 47.52.199.52
        port: 6379
        password: 123456
        timeout: 1000
        database: 0
        pool:
          max-active: 10
          max-idle: 8
          min-idle: 2
          max-wait: 100

    3、初始化连接,创建实例

    RedisTwoConfig.java

    package com.example.demo.config.redisConfig;
    
    import org.springframework.beans.factory.annotation.Value;
    import org.springframework.context.annotation.Bean;
    import org.springframework.context.annotation.Configuration;
    import org.springframework.data.redis.connection.RedisConnectionFactory;
    import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.data.redis.serializer.JdkSerializationRedisSerializer;
    import org.springframework.data.redis.serializer.StringRedisSerializer;
    import redis.clients.jedis.JedisPoolConfig;
    
    
    @Configuration
    public class RedisTwoConfig {
    
        @Bean("redisTwo")
        public RedisTemplate<String, Object> getRedisTemplate(
                @Value("${spring.redis-two.host}") String hostName,
                @Value("${spring.redis-two.password}") String password,
                @Value("${spring.redis-two.port}") int port,
                @Value("${spring.redis-two.database}") int database,
                @Value("${spring.redis-two.pool.max-active}") int maxActive,
                @Value("${spring.redis-two.pool.max-idle}") int maxIdle,
                @Value("${spring.redis-two.pool.min-idle}") int minIdle,
                @Value("${spring.redis-two.pool.max-wait}") long maxWait) {
    
            System.out.println(hostName+port+password);
            RedisConnectionFactory factory = this.getRedisConnectionFactory(
                    hostName, password, port, maxActive, maxIdle, minIdle, maxWait,
                    database); // 建立Redis的连接
            RedisTemplate<String, Object> redisTemplate = new RedisTemplate<String, Object>();
            redisTemplate.setConnectionFactory(factory);
            redisTemplate.setKeySerializer(new StringRedisSerializer()); // key的序列化类型
            redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer()); // value的序列化类型
            return redisTemplate;
        }
    
        public RedisConnectionFactory getRedisConnectionFactory(String hostName,
                                                                String password, int port, int maxActive, int maxIdle, int minIdle,
                                                                long maxWait, int database) { // 是负责建立Factory的连接工厂类
            JedisConnectionFactory jedisFactory = new JedisConnectionFactory();
            jedisFactory.setHostName(hostName);
            jedisFactory.setPort(port);
            jedisFactory.setPassword(password);
            jedisFactory.setDatabase(database);
            JedisPoolConfig poolConfig = new JedisPoolConfig(); // 进行连接池配置
            poolConfig.setMaxTotal(maxActive);
            poolConfig.setMaxIdle(maxIdle);
            poolConfig.setMinIdle(minIdle);
            poolConfig.setMaxWaitMillis(maxWait);
            jedisFactory.setPoolConfig(poolConfig);
            jedisFactory.afterPropertiesSet(); // 初始化连接池配置
            return jedisFactory;
        }
    }

    4、使用示例

    @RunWith(SpringRunner.class)
    @SpringBootTest
    @WebAppConfiguration
    public class RedisTest {
        @Resource
        private RedisTemplate<String, Object> redisTemplate;
    
        @Resource
        private StringRedisTemplate stringRedisTemplate;
    
        @Resource(name = "redisTwo")
        private RedisTemplate<String, Object> redisTemplate2;
    
        @Test
        public void testRedis2(){
            UserPO userPO = new UserPO();
            userPO.setAge(25);
            userPO.setName("小明");
            userPO.setUid(111L);
            redisTemplate2.opsForValue().set("user25",userPO);
            UserPO result = (UserPO) redisTemplate2.opsForValue().get("user25");
            System.out.println(result);
        }
    }
  • 相关阅读:
    5款程序员必备的Google插件! 不及格的程序员
    MA5680T管理软件、光猫自动注册、U2000光猫自动注册辅助工具隆重发布了
    kubernetes 部署 traefik2.5
    k8s设置自动补全
    openssl rand base64 生成随机字符串
    k8s1.23.6 安装kubeprometheus 无法获取监控数据
    harbor镜像仓库自动清理脚本
    《Java架构师的第一性原理》52算法之labuladong的算法小抄之框架套路
    基于信息检索和深度学习结合的单元测试用例断言自动生成
    勇往直前,做全能开发者,华为伙伴暨开发者大会2022精彩活动正式解锁!
  • 原文地址:https://www.cnblogs.com/wangzhuxing/p/10195198.html
Copyright © 2020-2023  润新知