SpringBoot整合redis (Jedis版)

71 阅读1分钟

依赖

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

配置

spring.data.redis.host=localhost
spring.data.redis.port=6379
spring.data.redis.password=
spring.data.redis.timeout=5000

配置类

@Configuration
public class JedisConfig {
    
    @Value("${spring.data.redis.host}")
    private String host;
    
    @Value("${spring.data.redis.port}")
    private int port;
    
    @Value("${spring.data.redis.password}")
    private String password;
    
    @Value("${spring.data.redis.timeout}")
    private int timeout;
    
    @Bean
    public JedisPool jedisPool() {
        JedisPoolConfig poolConfig = new JedisPoolConfig();
        poolConfig.setMaxTotal(10);     // 最大连接数
        poolConfig.setMaxIdle(5);       // 最大空闲连接数
        poolConfig.setMinIdle(3);       // 最小空闲连接数
        poolConfig.setTestOnBorrow(true); // 获取连接时检查是否可用
        
        if (password != null && !password.isEmpty()) {
            return new JedisPool(poolConfig, host, port, timeout, password);
        } else {
            return new JedisPool(poolConfig, host, port, timeout);
        }
    }
}

工具类

@Component
public class RedisUtil {
    
    @Autowired
    private JedisPool jedisPool;
    
    // 设置键值对
    public void set(String key, String value) {
        try (Jedis jedis = jedisPool.getResource()) {
            jedis.set(key, value);
        }
    }
    
    // 获取值
    public String get(String key) {
        try (Jedis jedis = jedisPool.getResource()) {
            return jedis.get(key);
        }
    }
    
    // 设置带过期时间的键值对
    public void setWithExpire(String key, String value, int seconds) {
        try (Jedis jedis = jedisPool.getResource()) {
            jedis.setex(key, seconds, value);
        }
    }
    
    // 删除键
    public void delete(String key) {
        try (Jedis jedis = jedisPool.getResource()) {
            jedis.del(key);
        }
    }
    
    // 检查键是否存在
    public boolean exists(String key) {
        try (Jedis jedis = jedisPool.getResource()) {
            return jedis.exists(key);
        }
    }

    // pipeline
    public void pipelineSet() {
        try (Jedis jedis = jedisPool.getResource()) {
            Pipeline pipeline = jedis.pipelined();
            pipeline.setex("ccb", 30, "123");
            pipeline.setex("ccb2", 30, "456");
            pipeline.syncAndReturnAll();
        }
    }

}