Redis單機/集羣搭建(含測試代碼) 完整步驟

Redies4.0.6搭建(單版)

需要c/c++編譯能力

sudo yum install gcc-c++

解壓redies安裝包

sudo tar –xzvf redies4.0.6.tar.gz

進入 redies4.0.6

cd redies4.0.6

安裝redies到指定路徑

sudo make install PREFIX=/usr/local/redies

然後進入到redies

cd /usr/local/redies

只有一個bin目錄

 

將redies4.0.6中的redies.conf拷貝到/usr/local/redies/bin下

sudo cp –rredies.conf  /usr/local/redies/bin

然後修改配置文件redies.conf

vi redies.conf

修改daemonize yes(原來爲no)

 

然後可以後臺運行redies服務

./redis-serverredis.conf

4.0.6版本會出現如下提示

 

然後可以運行客戶端

./redis-cli

查看進程

ps aux|grep redis

 

 

Jedis連接Redis

當出現異常:Connection refused: connect

說明只允許本地127.0.0.1訪問redies,所以需要修改redies.conf

#bind 127.0.0.1

然後又出現異常:DENIED Redis is running inprotected mode because protected mode is enabled…

說明需要使用密碼訪問,先客戶端連接上然後配置密碼或者修改配置文件protected-mode no

configset requirepass 密碼

 

publicclass JdiesTest {

   @Test

   publicvoid add() {

     Jedis jedis = new Jedis("192.168.254.136", 6379);

//在連接的時候需要添加密碼認證

     String auth = jedis.auth("123456");

     String name = jedis.get("name");

     System.out.println("name"+name);

     jedis.close();

   }

 

}

 

Redis集羣搭建

創建安裝目錄

mkdirredis-cluster

複製Redis中的bin文件(創建六個連接點,備份三個,必須是奇數個才能達到投票機制)

cp -r redies/bin./redis-cluster/redis01

cp -r redies/bin./redis-cluster/redis02

cp -r redies/bin./redis-cluster/redis03

cp -r redies/bin./redis-cluster/redis04

cp -r redies/bin./redis-cluster/redis05

cp -r redies/bin./redis-cluster/redis06

 

如果bin目錄下有dump.rdb(快照),刪除此文件

rm –rf dump.rdb

編輯每個cluster的redis.conf配置文件修改端口和集羣配置

port 10005

cluster-enable yes

安裝ruby腳本環境

yum install ruby

安裝依賴環境

gem install redis(這是下載最新版,可能會出現ruby版本過低,所以建議到官網下載低版本,此處使用了3.3.1版gem install redis3.3.1)
然後找到redis-trib.rb
cd /home/nhb/redis-4.0.6/src
拷貝此文件
cp –r redis-trib.rb /usr/local/redis-cluster
運行此腳本
./redis-trib.rb create –-replicas 1(一個備份機)192.168.254.136:10001 192.168.254.136:10002 192.168.254.136:10003 192.168.254.136:10004 192.168.254.136:10005 192.168.254.136:10006
如果出現[ERR] Sorry, can't connect to node說明需要更新最新版ruby ,不想更新可以把redis.conf中bind ip號
客戶端連接集羣
./redis-cli –p 端口號 –c(必須要加)
使用jedis測試

@Test

   publicvoid addCluster() throws IOException {

     JedisPoolConfig poolConfig = new JedisPoolConfig();

     // 設置最大連接數

     poolConfig.setMaxTotal(50);

     // 定義集羣信息

     List<JedisShardInfo> shards = new ArrayList<JedisShardInfo>();

     shards.add(new JedisShardInfo("192.168.254.136", 10001));

     shards.add(new JedisShardInfo("192.168.254.136", 10002));

     shards.add(new JedisShardInfo("192.168.254.136", 10003));

     shards.add(new JedisShardInfo("192.168.254.136", 10004));

     shards.add(new JedisShardInfo("192.168.254.136", 10005));

     shards.add(new JedisShardInfo("192.168.254.136", 10006));

     // 定義集羣連接接

     ShardedJedisPool shardedJedisPool = new ShardedJedisPool(poolConfig, shards);

     ShardedJedis shardedJedis = null;

     try {

        // 從連接池中獲取到jedis分片對象

        shardedJedis = shardedJedisPool.getResource();

        String value = shardedJedis.get("name");

        System.out.println(value);

     } catch (Exception e) {

        e.printStackTrace();

     } finally {

        if (null != shardedJedis) {

           // 關閉,檢測連接是否有效,有效則放回到連接池中,無效則重置狀態

           shardedJedis.close();

        }

     }

     // 關閉連接池,正常使用的時候,不用關閉

     shardedJedisPool.close();

   }

 

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