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

  • 相关阅读:
    过滤字符串
    sql业务分割
    如何用core自动创建model,与数据库连接
    记录日志
    easyui获取选中行上一行的数据
    获取天气插件代码
    粘包问题
    网络编程
    异常处理
    isinstance和issubclass、元类、反射
  • 原文地址:https://www.cnblogs.com/variablex/p/15015531.html
Copyright © 2011-2022 走看看