玩轉 SpringBoot 2.x 之 快速集成 Jedis客戶端(普通版)

前言

Java 開發 一般會選擇 Jedis 客戶端來進行 Redis 相關的操作,本文通過SpringBoot 項目帶你快速上手 Jedis 相關的操作。

Redis 安裝

請參考:帶你學 Redis:Redis安裝(二)

代碼案例

基礎配置操作

引入 jedis 客戶端的依賴,具體代碼如下:

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

添加 Jedis 客戶端配置類,將JedisPoolConfig和 JedisPool 注入Spring的上下文中。具體代碼如下:

@Configuration
public class JedisConfig {

    @Value("${redis.host}")
    String host;
    @Value("${redis.port}")
    int port;
    @Value("${redis.timeout}")
    int timeout;

    @Bean
    @ConfigurationProperties("redis")
    public JedisPoolConfig jedisPoolConfig() {
        return new JedisPoolConfig();
    }

    @Bean(destroyMethod = "close")
    public JedisPool jedisPool() {
        JedisPool jedisPool = new JedisPool(jedisPoolConfig(), host, port, timeout*1000);
        return jedisPool;
    }
}

添加 Redis 基礎配置信息在 SpringBoot 配置文件 application.properties 中。


redis.host=192.168.31.150
redis.port=6379
redis.timeout=2000
  • redis.host:Redis服務器主機 ip。
  • redis.port:Redis服務器端口。
  • redis.timeout:連接超時時間時間單位是毫秒。

演示

這裏通過 set key value 、get key、del key 三個命令進行演示操作。三個命令具體含義如下:

  • set key value :向指定的key中添加 string 的value 返回ok,如果有則覆蓋。
  • get key:獲取指定key的value值,返回值是string 的 value。
  • del key:刪除指定的 key 名稱的的key-value 信息,返回刪除的個數。
@RunWith(SpringRunner.class)
@SpringBootTest
public class JedisTest {
    Logger log = LoggerFactory.getLogger(JedisTest.class);
    @Autowired
    private JedisPool jedisPool;

    @Test
    public void set() {
        Jedis jedis = null;
        try {
            jedis = jedisPool.getResource();
            String returnVlaue = jedis.set("a","1");
            log.info("set 返回值是:{}",returnVlaue);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(jedis != null){
                jedis.close();
            }
        }
    }
    @Test
    public void get(){
        Jedis jedis = null;
        try {
            jedis = jedisPool.getResource();
            String returnVlaue = jedis.get("a");
            log.info("key 爲 a的值是:{}",returnVlaue);
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(jedis != null){
                jedis.close();
            }
        }
    }

    @Test
    public void del(){
        Jedis jedis = null;
        try {
            jedis = jedisPool.getResource();
            long count = jedis.del("a");
            log.info("刪除 key 爲 a 的值");
        }catch (Exception e){
            e.printStackTrace();
        }finally {
            if(jedis != null){
                jedis.close();
            }
        }
    }
}

set 測試日誌信息:

2020-02-22 18:53:09.439  INFO 18160 --- [           main] cn.lijunkui.JedisTest                    : Started JedisTest in 8.602 seconds (JVM running for 10.518)
2020-02-22 18:53:10.330  INFO 18160 --- [           main] cn.lijunkui.JedisTest                    : set 返回值是:OK
2020-02-22 18:53:10.342  INFO 18160 --- [       Thread-1] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'

Process finished with exit code 0

get 測試日誌信息:

2020-02-22 19:38:33.285  INFO 19108 --- [           main] cn.lijunkui.JedisTest                    : Started JedisTest in 9.0 seconds (JVM running for 11.008)
2020-02-22 19:38:34.054  INFO 19108 --- [           main] cn.lijunkui.JedisTest                    : key  a的值是:1
2020-02-22 19:38:34.064  INFO 19108 --- [       Thread-1] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'

Process finished with exit code 0

del 測試的日誌信息:

2020-02-22 19:39:32.625  INFO 3800 --- [           main] cn.lijunkui.JedisTest                    : Started JedisTest in 8.536 seconds (JVM running for 10.509)
2020-02-22 19:39:33.480  INFO 3800 --- [           main] cn.lijunkui.JedisTest                    : 刪除 key  a 的值
2020-02-22 19:39:33.491  INFO 3800 --- [       Thread-1] o.s.s.concurrent.ThreadPoolTaskExecutor  : Shutting down ExecutorService 'applicationTaskExecutor'

Process finished with exit code 0

小結

是不是很簡單呢,如果對 Jedis 還不熟悉的小夥伴,抓緊操作起來吧!

代碼示例

我本地環境如下:

  • SpringBoot Version: 2.1.0.RELEASE
  • Apache Maven Version: 3.6.0
  • Java Version: 1.8.0_144
  • IDEA:IntellJ IDEA

整合過程如出現問題可以在我的GitHub 倉庫 springbootexamples 中模塊名爲 spring-boot-2.x-redis-jedis 項目中進行對比查看

GitHub:https://github.com/zhuoqianmingyue/springbootexamples

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章