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

posted @ 2021-07-15 14:46  DailyYu  阅读(276)  评论(0编辑  收藏  举报