一、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. node之log4js

    log4js的配置文件: "log4js": { "appenders": { "out": { "type": &qu ...

  2. 【转载】BaseDao设计

    BaseDao接口设计 1 import java.util.List; /** * Dao接口,定义Dao基本操作 由BaseDaoImpl实现 * @author wht * @param < ...

  3. 数据库中char、varchar、varchar2、nvarchar之间的关系

    符串“abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时 ...

  4. 【Spring Cloud】与Spring Boot版本匹配关系

    Spring Cloud版本演进情况如下: 版本名称 版本Finchley snapshot版Edgware snapshot版Dalston SR1 当前最新稳定版本Camden SR7 稳定版本B ...

  5. 从零开始的全栈工程师——jQuery

    jQueryjq是js一个高效且精简的库( 用的多写得少 ) ,是chrome出版的.jq内部有一个$的方法,他是jq的起始符或标识符,这个方法是用于获取元素. 下载库或者框架的方法官网 produc ...

  6. 【Linux】Linux入门及常见基本操作命令详解

    本文基于 Red Hat Enterprise Linux 6 一.Linux 入门体验 1.1 root用户登陆 1.2 图形化与纯字符模式切换 init 5 - 图形模式 init 3 - 纯字符 ...

  7. java 将long类型的数值转无符号数

    由于JAVA中基本数据类型均为有符号数,而且最大数据类型long为8字节假如long为负数时,最高位为1,转为无符号数时会超出long的取值范围,所以转换规则如下: 方法: public static ...

  8. AMP+EPP3.0的开发环境配置

    经过摸索,总结出下列Apache.MySQL.PHP.EPP.ZendDebugger的开发环境配置方法: 版本: Apache: Apache-httpd-2.2.25-win32-x86-no_s ...

  9. redis的使用方式

    常用的语法以及使用方式:          key中不能包含回车空格等,key不要太长,占用内存.     概念介绍:         差集: a:{1,2,3} b:{2,3,4},以a为锚点,差集 ...

  10. SQL Server 数据库修改后不允许保存

    打开 工具 - > 选项 -> 设计器,确认[阻止保存要求重新创建表的更改]项是否选中,如果选中,取消即可.