基于IDEA的Jedis的使用之JedisPool(史上最最最最最最全l!!!)

[使用IDEA创建一个SpringBoot工程路径:]https://blog.csdn.net/weixin_45423451/article/details/103137733
[基于JAVA的redis使用(Jedis-API):]https://blog.csdn.net/weixin_45423451/article/details/103138699
下来我们就用idea的操作redis:
1.在pom.xml中配置依赖:

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

2.在SpringBoot的application.properties配置文件中配置redis:

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

3.配置JedisPool的配置类:

@Configuration
@EnableAutoConfiguration
@ConfigurationProperties
public class JedisConfig {
    @Value("${spring.redis.database}")
    private int database;
    @Value("${spring.redis.host}")
    private String host;
    @Value("${spring.redis.port}")
    private int port;
    @Value("${spring.redis.password}")
    private String password;
    @Value("${spring.redis.timeout}")
    private int timeout;
    @Value("${spring.redis.pool.max-active}")
    private int maxActive;
    @Value("${spring.redis.pool.max-wait}")
    private int maxWait;
    @Value("${spring.redis.pool.max-idle}")
    private int maxIdle;
    @Value("${spring.redis.pool.min-idle}")
    private int minIdle;

    @Bean
    public JedisPool redisPoolFactory() {
        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
        jedisPoolConfig.setMaxIdle(maxIdle);
        jedisPoolConfig.setMaxWaitMillis(maxWait);
        jedisPoolConfig.setMaxTotal(maxActive);
        jedisPoolConfig.setMinIdle(minIdle);
        jedisPoolConfig.setTestOnBorrow(false);//jedis 第一次启动时,会报错
        jedisPoolConfig.setTestOnReturn(true);

        return new JedisPool(jedisPoolConfig, host, port, timeout, null, database);
    }
}

4.JedisPool的使用(String类型):

@Component
public class JedisUtil {

    private static JedisPool jedisPool;

    @Autowired
    public void setJedisPool(JedisPool jedisPool) {
        JedisUtil.jedisPool = jedisPool;
    }

    /**
     * 获取Jedis实例
     */
    public static Jedis getJedis() {
        if (jedisPool != null) {
            return jedisPool.getResource();
        } else {
            return null;
        }
    }

    /**
     * 按key获取value
     */
    public static Object getValue(String key) {
        try (Jedis jedis = jedisPool.getResource()) {
            return SerializationUtils.deserialize(jedis.get(key.getBytes()));
        }
    }

    /**
     * 按key设置value
     */
    public static String setValue(String key, Object value) {
        try (Jedis jedis = jedisPool.getResource()) {
            return jedis.set(key.getBytes(), SerializationUtils.serialize(value));
        }
    }

    /**
     * 按key设置value,expiretime(秒)
     */
    public static String setValue(String key, Object value, int expiretime) {
        try (Jedis jedis = jedisPool.getResource()) {
            String result = jedis.set(key.getBytes(), SerializationUtils.serialize(value));
            if (Constant.OK.equals(result)) {
                jedis.expire(key.getBytes(), expiretime);
            }
            return result;
        }
    }

    /**
     * 按key刪除
     */
    public static Long del(String... key) {
        try (Jedis jedis = jedisPool.getResource()) {
            return jedis.del(key);
        }
    }

    /**
     * 检查key是否存在
     */
    public static Boolean exists(String key) {
        try (Jedis jedis = jedisPool.getResource()) {
            return jedis.exists(key.getBytes());
        }
    }

    /**
     * 按key重新过期时间
     */
    public static Long expire(String key, int seconds) {
        try (Jedis jedis = jedisPool.getResource()) {
            return jedis.expire(key.getBytes(), seconds);
        }
    }
}

你可能感兴趣的:(SpringBoot,redis)