一、redis主从搭建

1、搭建redis master

1>redis安装

mkdir -p /usr/local/webserver/redis  //安装目录
cd /usr/local/webserver/redis
wget http://download.redis.io/redis-stable.tar.gz //最新稳定版
tar xzf redis-stable.tar.gz
cd redis-stable
make //报错的话 install gcc
make install //redis可执行文件redis-cli,redis-server等会被复制到/usr/local/bin,命令行直接输入即可执行

2>主配置文件redis_master.conf做如下修改:

daemonize   yes   //使redis能以守护进程模式运行
pidfile /var/run/redis_6379.pid //设置redis PID 文件位置
port
dir /var/redis/ //设置持久化文件存放位置

3>启动master

[root@redis-sentinel redis-stable]# redis-server redis_master.conf
[root@redis-sentinel redis-stable]# ps -ef|grep redis
root : ? :: redis-server 127.0.0.1:
root : pts/ :: grep redis

4>使用客户端连接测试

[root@redis-sentinel redis-stable]# redis-cli -p
127.0.0.1:> set ww
OK
127.0.0.1:> get ww
""

2、搭建2个redis slave

1>从配置文件redis_slave_6380.conf,redis_slave_6381.conf做如下修改:

daemonize   yes   //使redis能以守护进程模式运行
pidfile /var/run/redis_6380.pid //设置redis PID 文件位置
port
dir /var/redis/ //设置持久化文件存放位置
slaveof 127.0.0.1 //设置属于哪个master
daemonize   yes   //使redis能以守护进程模式运行
pidfile /var/run/redis_6381.pid //设置redis PID 文件位置
port
dir /var/redis/ //设置持久化文件存放位置
slaveof 127.0.0.1 //设置属于哪个master

2>启动slave并测试数据是否同步

[root@redis-sentinel redis-stable]# redis-server redis_slave_6380.conf
[root@redis-sentinel redis-stable]# ps -ef|grep redis
root : ? :: redis-server 127.0.0.1:
root : ? :: redis-server 127.0.0.1:
root : pts/ :: grep redis
[root@redis-sentinel redis-stable]# redis-cli -p
127.0.0.1:> get ww
"" //数据已经同步过来
[root@redis-sentinel redis-stable]# redis-server redis_slave_6381.conf
[root@redis-sentinel redis-stable]# ps -ef|grep redis
root : ? :: redis-server 127.0.0.1:
root : ? :: redis-server 127.0.0.1:
root : ? :: redis-server 127.0.0.1:
root : pts/ :: grep redis
[root@redis-sentinel redis-stable]# redis-cli -p
127.0.0.1:> get ww
"" //数据已经同步过来

二、Redis容灾部署(哨兵Sentinel)

1、三个哨兵文件配置

////sentinel_26379.conf
port
daemonize yes
sentinel monitor mymaster 127.0.0.1
sentinel myid 1c805b9134364d69986f9042c22e95debf1932c9 //sentinel_26380.conf
port
daemonize yes
sentinel monitor mymaster 127.0.0.1 6379
sentinel myid ac1ef015411583d4b9f3d81cee830060b2f29862 //sentinel_26381.conf
port
daemonize yes
sentinel monitor mymaster 127.0.0.1
sentinel myid 0aca3a57038e2907c8a07be2b3c0d15171e44da5

2、启动sentinel,并查看sentinel所监控的master和slave

[root@redis-sentinel redis-stable]# redis-sentinel  sentinel_26379.conf
[root@redis-sentinel redis-stable]# redis-sentinel sentinel_26380.conf
[root@redis-sentinel redis-stable]# redis-sentinel sentinel_26381.conf [root@redis-sentinel redis-stable]# ps -ef|grep redis
root : ? :: redis-server 127.0.0.1:
root : ? :: redis-server 127.0.0.1:
root : ? :: redis-server 127.0.0.1:
root : pts/ :: redis-sentinel *: [sentinel]
root : pts/ :: redis-sentinel *: [sentinel]
root : pts/ :: redis-sentinel *: [sentinel]
root : pts/ :: grep redis [root@redis-sentinel redis-stable]# redis-cli -p
127.0.0.1:> sentinel masters
) ) "name"
) "mymaster"
) "ip"
) "127.0.0.1"
) "port"
) ""
) "runid"
) "83491622b984fa6bbb4cd7761c77b23491569b1b"
) "flags"
) "master"
... 127.0.0.1:> SENTINEL slaves mymaster
) ) "name"
) "127.0.0.1:6380"
) "ip"
) "127.0.0.1"
) "port"
) ""
) "runid"
) "e532cc9e510bf93a6c3dd5d978be8364c91c616f"
) "flags"
) "slave"
...
) ) "name"
) "127.0.0.1:6381"
) "ip"
) "127.0.0.1"
) "port"
) ""
) "runid"
) "f7cee9c9f6e5a346d38f2a09dfc9eb4846118ae5"
) "flags"
) "slave"
... 127.0.0.1:> SENTINEL get-master-addr-by-name mymaster
) "127.0.0.1"
) "" [root@redis-sentinel redis-stable]# kill - 5504
[root@redis-sentinel redis-stable]# ps -ef|grep redis
root : ? :: redis-server 127.0.0.1:
root : ? :: redis-server 127.0.0.1:
root : pts/ :: redis-sentinel *: [sentinel]
root : pts/ :: redis-sentinel *: [sentinel]
root : pts/ :: redis-sentinel *: [sentinel]
root : pts/ :: grep redis

//主库出现故障时自动将从库转换为主库
[root@redis-sentinel redis-stable]# redis-cli -p
127.0.0.1:> SENTINEL get-master-addr-by-name mymaster
) "127.0.0.1"
) ""

三、jedis中使用哨兵,具体代码参考haixuanweb

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans">
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
<property name="maxTotal" value="1000"/>
<property name="maxIdle" value="10"/>
<property name="minIdle" value="1"/>
<property name="maxWaitMillis" value="30000"/>
<property name="testOnBorrow" value="true"/>
<property name="testOnReturn" value="true"/>
<property name="testWhileIdle" value="true"/>
</bean> <bean id="cacheService" class="sentinel.CacheServiceImpl" destroy-method="destroy">
<property name="jedisSentinlePool">
<bean class="redis.clients.jedis.JedisSentinelPool">
<constructor-arg index="0" value="mymaster" />
<constructor-arg index="1">
<set>
<value>192.168.13.128:26379</value>
<value>192.168.13.128:26380</value>
<value>192.168.13.128:26381</value>
</set>
</constructor-arg>
<constructor-arg index="2" ref="jedisPoolConfig" />
</bean>
</property>
</bean>
</beans>
public class CacheServiceImpl implements CacheService {

    private static Logger logger = LoggerFactory.getLogger(CacheServiceImpl.class);

    private JedisSentinelPool jedisSentinlePool;

    public void set(String key, String value) {
JedisSentinelPool pool = getJedisSentinelPool();
Jedis jedis = pool.getResource();
try {
jedis.set(key, value);
} catch (Exception e) {
pool.returnBrokenResource(jedis);
}finally {
if(pool!=null){
pool.returnResource(jedis);
}
}
}
}
public interface CacheService {
public void set(String key, String value);
}
@Controller
public class GoodsController extends BaseNoLoginController {
@Autowired
private CacheService cacheService;
...
}

redis sentinel搭建以及在jedis中使用的更多相关文章

  1. 在Redis Sentinel环境下,jedis该如何配置

    在Redis主从复制架构中,如果master出现了故障,则需要人工将slave提升为master,同时,通知应用侧更新master的地址.这样方式比较低效,对应用侧影响较大. 为了解决这个问题,Red ...

  2. Redis服务器搭建/配置/及Jedis客户端的使用方法

    摘要 Redis服务器搭建.常用参数含意说明.主从配置.以及使用Jedis客户端来操作Redis Redis服务器搭建 安装 在命令行执行下面的命令: $ wget http://download.r ...

  3. redis sentinel搭建

    /usr/local/bin /usr/local/etc https://www.centos.bz/2017/08/redis-3-x-sentinel-ha-service/ https://w ...

  4. 【Redis】Redis Sentinel 哨兵模式搭建

    Redis Sentinel介绍 Redis Sentinel是Redis的官方高可用性解决方案 Redis Sentinel为Redis提供高可用性.实际上,这意味着使用Sentinel可以创建一个 ...

  5. Redis Sentinel 高可用服务搭建

    阅读目录: 关于 Redis 的概念 关于 Redis Sentinel 的概念 搭建 Redis Server(master) 搭建 Redis Server(slave) 搭建 Redis Sen ...

  6. Redis sentinel之集群搭建

    环境 由于不太熟悉docker,所以,把docker当虚拟机来用,服务器环境如下: Redis Server 环境搭建 Redis Server 01 搭建 并且制作Redis镜像 容器建立 # do ...

  7. redis sentinel集群的搭建

    背景说明: 这里采用1主2从的redis集群,3个sentinel搭建高可用redis集群. 一,关于搭建redis-sentinel高可用之前,我们必须要了解redis主从搭建redis-senti ...

  8. Redis Sentinel 集群搭建常见注意事项

    我的配置: 1个master,1个slave,3个sentinel 搭建的过程网上已经有很多了,这里列几个重点关注: 修改sentinel.conf的protected-mode与redis.conf ...

  9. 【转载】Redis Sentinel 高可用服务架构搭建

    作者:田园里的蟋蟀 出处:http://www.cnblogs.com/xishuai/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 阅读 ...

随机推荐

  1. 阿里巴巴国际站 网站和PC客户端都登录不了,其他电脑或手机可以

    背景 昨天晚上,我还能打开阿里巴巴国际站,PC客户端也可以登录 今天早上起床打开电脑,发现国际站的网站打开不了,客户端也登录不了,提示了错误信息,但是其他电脑或手机就可以登录 原因分析 1.是不是本机 ...

  2. Drupal Module Hooks

    Drupal is a Content Management System. Drupal is also deeply, deeply weird. While systems like Magen ...

  3. vue的拖拽文件

    <div ref='select_frame' ondragstart="return false">//防止跳转 </div> this.$refs.se ...

  4. js添加、修改、删除xml节点例子

    version="1.0" encoding="gb2312"?> . <bookstore> . <book genre=" ...

  5. mui使用技巧

    1.document.addEventListener('plusready', function(){ //console.log("所有plus api都应该在此事件发生后调用,否则会出 ...

  6. JS高级程序设计第三版——在HTML中使用JavaScript

    使用<script>元素的方式 外部引用式.行内式.嵌入式. JavaScript引用放在<body>后面的原因 假如在文档的<head>元素中包含所有JavaSc ...

  7. Apache转发到Tomcat

    #vi /etc/httpd/conf/httpd.conf 添加下面配置 NameVirtualHost *:80 <VirtualHost *:80>ProxyPreserveHost ...

  8. spark学习地址

    http://blog.sina.com.cn/s/blog_64d9a6ef0101ghvs.html http://blog.sina.com.cn/s/blog_49cd89710102v3b1 ...

  9. C++异常安全的思考

    异常安全的代码是指,满足两个条件 1异常中立性 : 是指当你的代码(包括你调用的代码)引发异常时,这个异常 能保持原样传递到外层调用代码 2.异常安全性:  1,抛出异常后,资源不泄露, 2,抛出异常 ...

  10. MapReduce框架结构及代码示例

    一个完整的 mapreduce 程序在分布式运行时有三类实例进程: 1.MRAppMaster:负责整个程序的过程调度及状态协调 2.MapTask:负责 map 阶段的整个数据处理流程 3.Redu ...