寫在前面
繼上一篇redis3.0.x叢集搭建完成之後,當然要用用戶端JedisCluster簡單測試一下叢集啦,這樣就要將redis.conf裡bind 127.0.0.1改成bind +真機ip(我的192.168.161.131),下面簡單地將測試中遇到的問題及解決辦法記錄在本篇。 遇到的問題及解決辦法
在redis.conf裡bind 真機ip後,接著重新執行每個redis.conf,最後再建立叢集,但報錯,如下圖所示:
圖中報的錯即:
[ERR] Node 192.168.161.131:7000 is not empty. Either the node already knows other nodes (check with CLUSTER NODES) or contains some key in database 0.
這就奇怪了,於是我又去檢查了一下redis.conf,ip我確實改過來了
想了一會發現這三個檔案appendonly.aof dump.rdb nodes.conf是之前執行ip127.0.0.1時產生的,在我改為真機ip後在執行並沒有生效。
這裡解釋一下dump.rdb檔案:
dump.rdb是由Redis伺服器自動產生的 預設情況下 每隔一段時間redis伺服器程式會自動對資料庫做一次遍曆,把記憶體快照寫在一個叫做“dump.rdb”的檔案裡,這個持久化機制叫做SNAPSHOT。有了SNAPSHOT後,如果伺服器宕機,重新啟動redis伺服器程式時redis會自動載入dump.rdb,將資料庫狀態恢複到上一次做SNAPSHOT時的狀態。
知道原因後就好辦了,解決辦法:
1)將每個節點下aof、rdb、nodes.conf本地備份檔案刪除;
2)172.168.63.201:7001> flushdb #清空當前資料庫(可省略)
3)之後再執行指令碼,成功執行;
問題解決了之後就可以成功從java用戶端測試了:
ps:這裡大家不要這樣測試,可以將其寫在設定檔裡,我這裡是為了方便。 寫在最後
其實平時在測試中遇到的很多問題,都可以在網上找到答案,這裡只是簡單的記錄其中的一個。關於關於redis叢集的介紹,瞭解請看 redis中文介紹