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();
}