zoukankan      html  css  js  c++  java
  • Spring Boot整合Redis的客户端Jedis

    首先pom.xml配置文件引入Jedis的包

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

    其次application.properties配置文件

    在配置文件中添加一些关于redis的配置信息。有些参数可以不配置,根据自己的需求来。

    # Redis数据库索引(默认为0)
    spring.redis.database=0
    # Redis服务器地址
    spring.redis.host=82.156.29.86
    # Redis服务器连接端口
    spring.redis.port=6379
    # Redis服务器连接密码(默认为空)
    spring.redis.password=ruoyu123456
    # 连接池最大连接数(使用负值表示没有限制)
    spring.redis.jedis.pool.max-active=20
    # 连接池最大阻塞等待时间(使用负值表示没有限制)
    spring.redis.jedis.pool.max-wait=-1
    # 连接池中的最大空闲连接
    spring.redis.jedis.pool.max-idle=10
    # 连接池中的最小空闲连接
    spring.redis.jedis.pool.min-idle=0
    # 连接超时时间(毫秒)
    spring.redis.timeout=1000
    

    简单测试

    在测试文件夹下创建一个一个测试类,用来简单的测试一下能否正常连接到redis数据库。

    代码如下:

    @SpringBootTest
    public class JedisTest {
        //通过@Value注解的方式把application.properties中的数据注入进来
        @Value("${spring.redis.host}")
        private String host;
    
        @Value("${spring.redis.port}")
        private int port;
    
    
        @Value("${spring.redis.password}")
        private String password;
    
        @Test
        public void connectTest() {
            Jedis jc= new Jedis(host, port);
            jc.auth(password);
            String setResult = jc.set("springboot", "test"); //向redis插入一条数据
            if("OK".equals(setResult)) {
                System.out.println("set success!");
            }
        }
    }
    
    

    JedisPool

    在实际开发中,肯定不会像上面那样自己new一个Jedis的实例。我们要自动注入Jedis的实例,然后在需要使用的地方直接@AutoWired取出来就好了。

    JedisConfigure配置

    我们写一个redis的配置类

    @Configuration
    public class JedisConfig {
        @Value("${spring.redis.host}")
        private String host;
    
        @Value("${spring.redis.port}")
        private int port;
    
        @Value("${spring.redis.password}")
        private String password;
    
        @Value("${spring.redis.jedis.pool.max-active}")
        private int maxActive;
    
        @Value("${spring..redis.timeout}")
        private int timeout;
    
        public JedisPoolConfig jedisPoolConfig(){    //这个是修改redis性能的时候需要的对象
            JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
            jedisPoolConfig.setMaxWaitMillis(timeout); //连接超时时间
            jedisPoolConfig.setMaxTotal(maxActive); //连接池最大连接数
            return jedisPoolConfig;
        }
        //把JedisPool注入到IoC容器中
        //然后在其他地方(比如Service,Controller)就可以通过@AutoWired取出JedisPool的实例使用
        @Bean  
        public JedisPool jedisPool(){
            JedisPoolConfig jedisPoolConfig = jedisPoolConfig();
            return new JedisPool(jedisPoolConfig,host,port, timeout, password); //JedisPool的连接池
        }
    }
    

    使用

    下面写了一个测试用例来测试Jedis的配置类是否能工作。在service或者controller中的使用类似

    
    //测试JedisConfig是否配置成功
    @SpringBootTest
    public class JedisTest {
    
        @Autowired
        private JedisPool jp; //注入JedisPool的实例
    
        @Test
        public void connectTest() {
            Jedis jd = jp.getResource(); //从连接池中取出一个Jedis实例
            String setResult = jd.set("jedispool", "test"); //进行插入kv操作
            if("OK".equals(setResult)) {
                System.out.println("set success!");
            }
        }
    }
    
    

    JedisCluster

    如果Redis服务器是一个集群,有多个IP地址如何操作(后续有空补上)

    参考文献:

    https://www.cnblogs.com/keatsCoder/p/12609109.html

    https://www.cnblogs.com/beanbag/p/13081444.html

    https://blog.csdn.net/kxj19980524/article/details/85256630

  • 相关阅读:
    消息中间件(一)MQ详解及四大MQ比较
    SIP协议
    PAT (Basic Level) Practice 1008 数组元素循环右移问题
    LeetCode-Algorithms 1. 两数之和
    PAT (Basic Level) Practice 1040 有几个PAT
    PAT (Basic Level) Practice 1023 组个最小数
    PAT (Basic Level) Practice 1021 个位数统计
    PAT (Basic Level) Practice 1007 素数对猜想
    PAT (Basic Level) Practice 1006 换个格式输出整数
    PAT (Basic Level) Practice 1004 成绩排名
  • 原文地址:https://www.cnblogs.com/variablex/p/15015531.html
Copyright © 2011-2022 走看看