一、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. Starting MySQL. ERROR! The server quit without updating PID file如何解决

    今天数据库突然挂了.重启提示: Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/v ...

  2. hibernate注解JPA

    1.JPA与hibernate 什么是JPA ? java persistence api :java持久化api,同一的ORM规范,是由sun公司指定的规范接口,hibernate实现了JPA规范. ...

  3. sp_addlinkedserver创建远程服务器查询

    远程服务器查询可以分两步完成: 1.建立连接服务器 exec sp_addlinkedserver @server='Test_Server', --被访问的服务器别名 @srvproduct='', ...

  4. 抽象工厂模式&简单工厂模式

    抽象工厂模式 优点: 如IFactory factory=new AccessFactory(),在一个应用中只需要初始化一次,这就使得改变应用的时候变得非常容易:其次它让具体的创建实例过程与客户端分 ...

  5. HashMap和Hashtable的比较

    相同点 HashMap和Hashtable都是存储“键值对(key-value)”的散列表,而且都是采用拉链法解决hash冲突的.但是1.8中,hashmap引入了红黑树.Hashtable没有引入红 ...

  6. CSS 面包屑导航栏

    做之前,先看一下效果图. demo01.png 首先,书写好 HTML 代码. <div id="crumbs"> <ul> <li><a ...

  7. SVM个人学习总结

    SVM个人学习总结 如题,本文是对SVM学习总结,主要目的是梳理SVM推导过程,以及记录一些个人理解. 1.主要参考资料 [1]Corres C. Support vector networks[J] ...

  8. join......on 后面的and 和where的区别

    a.where 是在两个表join完成后,再附上where条件. b. and 则是在表连接前过滤A表或B表里面哪些记录符合连接条件,同时会兼顾是left join还是right join.即 假如是 ...

  9. SharePoint 2013 - Cross-domain Library

    首先,参考链接:https://msdn.microsoft.com/en-us/library/office/fp179893.aspx?f=255&MSPPError=-214721739 ...

  10. 【Linux】Linux 在线安装yum

    Linux如何安装软件? 一.RPM安装 优点: 安装过程很简单 缺点: 需要自己寻找和系统版本对应的RPM包 安装过程中需要解决包的依赖问题(例如tftp包) 二.yum在线安装 软件包仓库 仓库的 ...