java操作redis(遠端連線阿里雲上的redis)
阿新 • • 發佈:2019-01-01
之前在我的阿里雲部署的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的學習吧!