redis主従と哨兵アーキテクチャおよびクライアントアクセス
20576 ワード
redis主従と哨兵アーキテクチャおよびクライアントアクセス
redis主従アーキテクチャ構築##
Redisプライマリ・スレーブ・レプリケーションの機能は非常に強力で、次のメリットがあります. Redis単点故障を避ける 読み書き分離アーキテクチャを構築し、読み書きが少ないアプリケーションシーン を満たす.
ノード構成の例(プライマリノードは変更されません)
1.redis関連構成の変更(rediss.conf)
3、主従レプリケーションの構成
4、スレーブノードの起動
5、接続スレーブノード
6、主ノードインスタンスにデータを書くことをテストして、ノードインスタンスから直ちに同期して新しい修正データができるかどうか
JAvaアクセス
Jedisアクセスとspringbootアクセスredisプライマリ・スレーブの方法javaクライアントアクセスredisを表示するには、シングル・マシン・アクセスと同様に、特定のコードを使用します.https://blog.csdn.net/weixin_38414968/article/details/103246518
哨兵アーキテクチャ構築
sentinel哨兵は特殊なredisサービスであり、読み書きサービスは提供されず、主にredisインスタンスノードを監視するために使用される.哨兵アーキテクチャの下でclient端は初めて哨兵からredisの主ノードを探し出し、その後redisの主ノードに直接アクセスし、毎回sentinelエージェントを通じてredisの主ノードにアクセスすることはなく、redisの主ノードが変化すると、哨兵は最初に感知し、新しいredisの主ノードをclient端に通知する(この中でredisのclient端は一般的に購読機能を実現し、sentinelが発表したノード変動メッセージを購読する)
哨兵アーキテクチャ構築手順
1、redis関連構成の変更(sentinel.conf)
2、sentinel哨兵の起動例
3、sentinelのinfo情報を表示する
4、複数の歩哨を配置し、この手順に従えばよい
Jedisは哨兵をつなぐ
1.jedisの依存パッケージのインポート
2、jedis接続コード
Springboot統合redis接続哨兵
1、依存パッケージのインポート
2、application.yml構成
3、StringRedisTemplate接続歩哨
redis主従アーキテクチャ構築##
Redisプライマリ・スレーブ・レプリケーションの機能は非常に強力で、次のメリットがあります.
ノード構成の例(プライマリノードは変更されません)
1.redis関連構成の変更(rediss.conf)
port 6380 # redis
pidfile /var/run/redis_6380.pid # redis id
logfile "6380.log" #
dir /usr/local/redis‐5.0.3/data/6380 redis
3、主従レプリケーションの構成
replicaof xxx.xxx.xx.xx 6379 # redis
replica‐read‐only yes #
4、スレーブノードの起動
redis‐server redis.conf # ,
5、接続スレーブノード
redis‐cli ‐p 6380 ( )
6、主ノードインスタンスにデータを書くことをテストして、ノードインスタンスから直ちに同期して新しい修正データができるかどうか
JAvaアクセス
Jedisアクセスとspringbootアクセスredisプライマリ・スレーブの方法javaクライアントアクセスredisを表示するには、シングル・マシン・アクセスと同様に、特定のコードを使用します.https://blog.csdn.net/weixin_38414968/article/details/103246518
哨兵アーキテクチャ構築
sentinel哨兵は特殊なredisサービスであり、読み書きサービスは提供されず、主にredisインスタンスノードを監視するために使用される.哨兵アーキテクチャの下でclient端は初めて哨兵からredisの主ノードを探し出し、その後redisの主ノードに直接アクセスし、毎回sentinelエージェントを通じてredisの主ノードにアクセスすることはなく、redisの主ノードが変化すると、哨兵は最初に感知し、新しいredisの主ノードをclient端に通知する(この中でredisのclient端は一般的に購読機能を実現し、sentinelが発表したノード変動メッセージを購読する)
哨兵アーキテクチャ構築手順
1、redis関連構成の変更(sentinel.conf)
port 26379 #
daemonize yes #
pidfile "/var/run/redis‐sentinel‐26379.pid" # id
logfile "26379.log" #
dir "/usr/local/redis‐5.0.3/data" #
# sentinel monitor # quorum , sentinel master ( :sentinel /2 + 1),master
sentinel monitor mymaster( ) xxx.xxx.xx.xx( ip) 6379( ) 2
2、sentinel哨兵の起動例
src/redis‐sentinel sentinel.conf( )
3、sentinelのinfo情報を表示する
src/redis‐cli ‐p 26379
127.0.0.1:26379>info
Sentinel info redis
4、複数の歩哨を配置し、この手順に従えばよい
Jedisは哨兵をつなぐ
1.jedisの依存パッケージのインポート
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>
2、jedis接続コード
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPoolConfig;
import redis.clients.jedis.JedisSentinelPool;
import java.util.HashSet;
import java.util.Set;
/**
* @auther jedis
* @create xxxx/xx/xx
*/
public class JedisSentine {
public static void main(String[] args) {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(20); // , 8
config.setMaxIdle(10); // , 8
config.setMinIdle(5); // , 0
//
String masterName = "mymaster";
// ( )
Set<String> sentinels = new HashSet<String>();
sentinels.add(new HostAndPort("xxx.xxx.xx.xx",26379).toString());
// :
// sentinels.add(new HostAndPort("xxx.xxx.xx.xx",26380).toString());
// sentinels.add(new HostAndPort("xxx.xxx.xx.xx",26381).toString());
/**
* JedisSentinelPool JedisPool , redis
* JedisSentinelPool sentinel , sentinel redis
*
* masterName : redis
* sentinels :
* config : poolConfig
* timeout(3000) :
* password(null) : ( redis null)
**/
JedisSentinelPool jedisSentinelPool = new JedisSentinelPool(masterName, sentinels,config, 3000, null);
Jedis jedis = null;
try {
jedis = jedisSentinelPool.getResource();
jedis.set("sentine","ok");
jedis.get("sentine");
}catch (Exception e){
e.printStackTrace();
}finally {
// , JedisPool ,Jedis 。
if (null != jedis){
jedis.close();
}
}
}
}
Springboot統合redis接続哨兵
1、依存パッケージのインポート
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>
2、application.yml構成
server:
port: 8080
spring:
redis:
database: 0
redis.timeout: 3000
lettuce:
pool:
max-idle: 50 #
min-idle: 10 #
max-active: 100 # ( )
pool.max-wait: 1000 # ( )
sentinel:
master: mymaster #
nodes: xxx.xxx.xx.xx:26379,xxx.xxx.xx.xx:26380,xxx.xxx.xx.xx:26381 #
3、StringRedisTemplate接続歩哨
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
/**
* @auther SentineConn
* @create xxxx/xx/xx
*/
@RestController
public class SentineConn {
@Autowired
StringRedisTemplate stringRedisTemplate;
/**
* master ,
* master , , ,
* master , master , maste
*/
@RequestMapping("sentine_conn")
public void mastConn(){
stringRedisTemplate.opsForValue().set("sentine","ok");
stringRedisTemplate.opsForValue().get("sentine");
}
}