redis高可用解决方案(一):哨兵模式

redis哨兵模式

使用redis的分片可以满足redis内存的扩容,但是一旦有服务器宕机,那么整个redis都将无法使用

redis可以利用哨兵模式来实现redis的高可用

哨兵机制原理

首先配置主从结构,一台主机下面可以挂载多台从机,主机的数据同步到从机,但是从机只能读不能写

哨兵进行监听,利用心跳检测机制检查当前主机是否存货,如果超过3次没有回应则表示主机宕机

当主机宕机后,会从当前的从机中选举一个主机,其余机器都是从机,以前的主机在从新启动以后也会挂载到当前主机上

主从搭建步骤

检查是否有启动的redis

ps -ef|grep redis

关闭redis

kill -9 kid

复制分片文件夹更名为sentinel

cp shards sentinel

进入sentinel

cd sentinel

启动多台 redis

redis-server redis-6379.conf & redis-server redis-6380.conf & redsi-server redis-6381.conf

配置主从

主机:6379

从机6380,6381

连接从机

redis-server redis-6380.conf

挂载到主机

slaveof 主机ip 端口

检查挂载情况

info replication

哨兵搭建

在redis目录下有一个哨兵的配置文件复制到sentinel目录下

cp sentine.conf sentine

使用vim打开sentine.conf配置文件

vim sentine.conf

如下修改

关闭保护模式

​ protected-mode no #去点注释

开启后台启动

​ daemonize yes

修改哨兵监听端口

​ sentinel monitor mymaster 127.0.0.1 6379 1

启动哨兵

redis-sentinel sentinel.conf

在springboot中集成redis哨兵

配置文件 redis.properties

redis.sentinel.masterName=mymaster
redis.sentinels=39.101.165.86:26379

redisConfig.java

@PropertySource(value = "classpath:/properties/redis.properties")
@Configuration
public class RedisConfig {
    @Value("${redis.sentinel.masterName}")
    private String masterName;
    @Value("${redis.sentinels}")
    private String sentinels;

    @Bean(name = "jedisSentinelPool")
    public JedisSentinelPool jedisSentinelPool(){
        Set<String> sentinel = new HashSet<>();
        sentinel.add(sentinels);
        JedisSentinelPool pool = new JedisSentinelPool(masterName, sentinel);
        return pool;
    }

    @Bean
    @Scope("prototype")
    public Jedis jedis(@Qualifier("jedisSentinelPool")JedisSentinelPool pool){
        Jedis jedis = pool.getResource();
        return jedis;
    }

}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值