1. 程式人生 > >java操作redis(遠端連線阿里雲上的redis)

java操作redis(遠端連線阿里雲上的redis)

之前在我的阿里雲部署的redis,一直用命令練習,也沒啥實際意義。畢竟咱是java開發,又不是運維,還是希望在程式碼裡操作redis。不過在這之前遇到過一點小麻煩,在java程式碼裡不能連線阿里雲上的redis。

一、搭建java的redis demo專案

依賴工具包就兩個:jedis-2.9.0.jar      commons-pool-1.6.jar

我用的是maven的java專案,在這裡貼出來pom引用:

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

 <dependency>
      <groupId>commons-pool</groupId>
      <artifactId>commons-pool</artifactId>
      <version>1.6</version>
 </dependency>

二、測試連線,出現問題

redis的java連線程式碼很簡單,就是一個構造就行了,然而這裡卻碰到了一個問題

  public static void main(String[] args) {
      Jedis jedis= new Jedis( JedisTest.URL,63**);//URL是我阿里雲的IP
        System.out.println(jedis.ping());
        System.out.println(jedis.get("mm"));
        System.out.println(jedis.set("steve","tao"));
    }

(注:之前阿里雲被人利用redis 6379埠號注入了蠕蟲病毒挖礦,後面就改了埠號,這裡不敢貼出IP和埠號,望體諒)

出現這種情況之後,也是一頭霧水,去網上一搜。都說是redis3.0之後預設只准本機訪問了,需要修改server.conf配置檔案的bind 和protected-mode兩處地方。

三、嘗試開啟遠端允許

去阿里雲上一看,確實是3.0版本的redis。那就該吧!然而在改配置檔案的時候又發現了問題,檔案裡沒有protected-mode配置項,自己新增redis啟動就會報錯。這裡只是改了bind

這種情況下java還是無法連線redis。嘗試了設定密碼,java程式碼裡用密碼登入,也還是不行

四、解決方案

折騰了好久,想起了以前配置activemq的時候也出現過java程式碼裡無法連線,只是xshell可以操作,當時是由於阿里雲的安全組控制作怪。

登入後臺一看才恍然大悟,之前redis用的是6379,因為前段時間redis被感染病毒,就改了埠,這裡沒有為新埠設定安全規則。新增安全規則之後,再去嘗試:

可以聯通了,後面就開始Jedis的學習吧!