Spring boot集成redis的第二种方法:jedis


基于Springboot已经使用spring-data-redis方式写过一篇文章了,现在介绍使用redis的第二种方法:使用jedis

1. 在pom.xml导入jedis包

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

2. 配置文件中添加redis的配置

jedis :
  pool :
    host : 127.0.0.1
    port : 6379
    config :
      maxTotal: 100
      maxIdle: 10
      maxWaitMillis : 100000

3. 增加redis配置类RedisConfiguration.java

package com.ieslab.powergrid.demosvr.config;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Qualifier;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

@Configuration
public class RedisConfiguration {

    @Bean(name= "jedis.pool")
    @Autowired
    public JedisPool jedisPool(@Qualifier("jedis.pool.config") JedisPoolConfig config,
                               @Value("${jedis.pool.host}")String host,
                               @Value("${jedis.pool.port}")int port) {
        return new JedisPool(config, host, port);
    }

    @Bean(name= "jedis.pool.config")
    public JedisPoolConfig jedisPoolConfig (@Value("${jedis.pool.config.maxTotal}")int maxTotal,
                                            @Value("${jedis.pool.config.maxIdle}")int maxIdle,
                                            @Value("${jedis.pool.config.maxWaitMillis}")int maxWaitMillis) {
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(maxTotal);
        config.setMaxIdle(maxIdle);
        config.setMaxWaitMillis(maxWaitMillis);
        return config;
    }

}

4. 编写RedisClient.java客户端访问类

package com.ieslab.powergrid.demosvr.utils;

import java.util.HashSet;
import java.util.Set;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;


@Component
public class RedisClient<T> {

    @Autowired
    private JedisPool jedisPool;

    public void set(String key, String value) throws Exception {
        Jedis jedis = null;
        try {
            jedis = jedisPool.getResource();
            jedis.set(key, value);
        } finally {
            //返还到连接池
            jedis.close();
        }
    }

    public String get(String key) throws Exception  {

        Jedis jedis = null;
        try {
            jedis = jedisPool.getResource();
            return jedis.get(key);
        } finally {
            //返还到连接池
            jedis.close();
        }
    }

    public void setobj(String key, T value) throws Exception {
        Jedis jedis = null;
        try {
            Set<T> set = new HashSet<T>();
            set.add(value);
            jedis = jedisPool.getResource();
            jedis.sadd(key, String.valueOf(set));
        } finally {
            //返还到连接池
            jedis.close();
        }
    }
}

5. 编写单元测试代码PersonServiceTest.java

package com.ieslab.powergrid.demosvr.utils;

import com.ieslab.powergrid.demosvr.entity.Person;
import lombok.extern.slf4j.Slf4j;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;

import java.util.HashMap;
import java.util.List;
import java.util.Map;

@SpringBootTest
@Slf4j
class RedisClientTest {
    @Autowired
    RedisClient redisClient;

    @Test
    void insertData(){
        try {
            redisClient.set("test:1","ceshi daima");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

    @Test
    void getData(){
        try {
            log.info("获取数据:" + redisClient.get("test:1"));
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

这个测试用例中,有插入方法,有获取方法。可以测试一下是否成功!!!
下面是执行getData()方法的截图:
在这里插入图片描述

5.总结

感觉本方法比spring-data-redis更好用,只是个人感觉,非喜勿喷啊!

发布了21 篇原创文章 · 获赞 4 · 访问量 409

猜你喜欢

转载自blog.csdn.net/houpeibin2012/article/details/104381608