1. 程式人生 > >第一次使用java操作Redis以及錯誤小結

第一次使用java操作Redis以及錯誤小結

目錄

java操作Redis的流程:

1.匯入jedis依賴包:

 2.匯入junit依賴包:

3.寫測試方法:

 關於testJedis( )執行時控制檯報錯分析:

1.redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectExction : 

2.redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required.:


【注】本篇部落格使用IDEA + maven來進行程式碼的書寫和管理。

Java操作Redis時的jar包進行了分類:jedis包和redisson包。

jedis包:用於資料庫的增刪改查;

redisson包:用於加鎖和解鎖。

java操作Redis的流程:

1.匯入jedis依賴包:

https://mvnrepository.com/上搜索"jedis"來匯入相關版本的jedis依賴:

<!-- https://mvnrepository.com/artifact/redis.clients/jedis -->
<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>2.9.0</version>
</dependency>

 2.匯入junit依賴包:

junit屬於單元測試外掛,可以使得程式設計師省去main()直接對某一個方法進行測試,只需要在需要測試的方法的前面加上@Test。但是對於該方法有強制性要求:

      (1).必須使用public修飾;

      (2).方法中不能有返回值;

      (3).方法中不得有引數。

3.寫測試方法:

public class JedisDemo1 {
    @Test
    public void testJedis(){
        //連線Redis伺服器
        Jedis jedis = new Jedis("172.27.200.100",6379);
        String result = jedis.set("host","172");//向Redis中加入資料 若成功返回OK
        System.out.println(result);
    }
}

 關於testJedis( )執行時控制檯報錯分析:

1.redis.clients.jedis.exceptions.JedisConnectionException: java.net.ConnectExction : 

與伺服器上的Redis連線失敗。原因有:

(1).伺服器防火牆上的6379埠沒有開啟

#檢查6379埠是否開放
firewall-cmd --query-port=6379/tcp

#開放6379埠
firewall-cmd --add-port=6379/tcp --permanent

#重啟防火牆
firewall-cmd --reload

再次檢查
firewall-cmd --query-port=6379/tcp

 (2).Redis安裝目錄下總配置檔案redis.conf沒有更改

Redis預設只支援本地連線,所以要通過修改配置檔案來支援其他機器連線Redis.

        1)使用vim或vi開啟redis.conf;

        2)將大約第70行的"bind 127.0.0.1" 改為 “bind 0.0.0.0”以用來支援所有主機可以連線Redis;

                   3)檢視當前執行的Redis的程序號:

ps -A | grep redis

        4)根據程序號強行殺死當前Redis程序:

kill -9 程序號

        5)使用修改的redis.conf啟動Redis:

#根據redis.conf的路徑 可做修改
redis-server /opt/redis4.0.2/redis.conf

 (3)Redis伺服器沒有啟動。

2.redis.clients.jedis.exceptions.JedisDataException: NOAUTH Authentication required.:

這種錯誤屬於連線上了伺服器上的Redis,但是沒有認證。也就是說沒有輸入密碼或者輸入的密碼不正確導致。應該在java測試程式碼中加上:

jedis.auth("123456");//方法引數是登陸密碼