redis sentinel搭建以及在jedis中使用
一、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中使用的更多相关文章
- 在Redis Sentinel环境下,jedis该如何配置
在Redis主从复制架构中,如果master出现了故障,则需要人工将slave提升为master,同时,通知应用侧更新master的地址.这样方式比较低效,对应用侧影响较大. 为了解决这个问题,Red ...
- Redis服务器搭建/配置/及Jedis客户端的使用方法
摘要 Redis服务器搭建.常用参数含意说明.主从配置.以及使用Jedis客户端来操作Redis Redis服务器搭建 安装 在命令行执行下面的命令: $ wget http://download.r ...
- redis sentinel搭建
/usr/local/bin /usr/local/etc https://www.centos.bz/2017/08/redis-3-x-sentinel-ha-service/ https://w ...
- 【Redis】Redis Sentinel 哨兵模式搭建
Redis Sentinel介绍 Redis Sentinel是Redis的官方高可用性解决方案 Redis Sentinel为Redis提供高可用性.实际上,这意味着使用Sentinel可以创建一个 ...
- Redis Sentinel 高可用服务搭建
阅读目录: 关于 Redis 的概念 关于 Redis Sentinel 的概念 搭建 Redis Server(master) 搭建 Redis Server(slave) 搭建 Redis Sen ...
- Redis sentinel之集群搭建
环境 由于不太熟悉docker,所以,把docker当虚拟机来用,服务器环境如下: Redis Server 环境搭建 Redis Server 01 搭建 并且制作Redis镜像 容器建立 # do ...
- redis sentinel集群的搭建
背景说明: 这里采用1主2从的redis集群,3个sentinel搭建高可用redis集群. 一,关于搭建redis-sentinel高可用之前,我们必须要了解redis主从搭建redis-senti ...
- Redis Sentinel 集群搭建常见注意事项
我的配置: 1个master,1个slave,3个sentinel 搭建的过程网上已经有很多了,这里列几个重点关注: 修改sentinel.conf的protected-mode与redis.conf ...
- 【转载】Redis Sentinel 高可用服务架构搭建
作者:田园里的蟋蟀 出处:http://www.cnblogs.com/xishuai/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 阅读 ...
随机推荐
- node之log4js
log4js的配置文件: "log4js": { "appenders": { "out": { "type": &qu ...
- 【转载】BaseDao设计
BaseDao接口设计 1 import java.util.List; /** * Dao接口,定义Dao基本操作 由BaseDaoImpl实现 * @author wht * @param < ...
- 数据库中char、varchar、varchar2、nvarchar之间的关系
符串“abc",对于CHAR (20),表示你存储的字符将占20个字节(包括17个空字符),而同样的VARCHAR2 (20)则只占用3个字节的长度,20只是最大值,当你存储的字符小于20时 ...
- 【Spring Cloud】与Spring Boot版本匹配关系
Spring Cloud版本演进情况如下: 版本名称 版本Finchley snapshot版Edgware snapshot版Dalston SR1 当前最新稳定版本Camden SR7 稳定版本B ...
- 从零开始的全栈工程师——jQuery
jQueryjq是js一个高效且精简的库( 用的多写得少 ) ,是chrome出版的.jq内部有一个$的方法,他是jq的起始符或标识符,这个方法是用于获取元素. 下载库或者框架的方法官网 produc ...
- 【Linux】Linux入门及常见基本操作命令详解
本文基于 Red Hat Enterprise Linux 6 一.Linux 入门体验 1.1 root用户登陆 1.2 图形化与纯字符模式切换 init 5 - 图形模式 init 3 - 纯字符 ...
- java 将long类型的数值转无符号数
由于JAVA中基本数据类型均为有符号数,而且最大数据类型long为8字节假如long为负数时,最高位为1,转为无符号数时会超出long的取值范围,所以转换规则如下: 方法: public static ...
- AMP+EPP3.0的开发环境配置
经过摸索,总结出下列Apache.MySQL.PHP.EPP.ZendDebugger的开发环境配置方法: 版本: Apache: Apache-httpd-2.2.25-win32-x86-no_s ...
- redis的使用方式
常用的语法以及使用方式: key中不能包含回车空格等,key不要太长,占用内存. 概念介绍: 差集: a:{1,2,3} b:{2,3,4},以a为锚点,差集 ...
- SQL Server 数据库修改后不允许保存
打开 工具 - > 选项 -> 设计器,确认[阻止保存要求重新创建表的更改]项是否选中,如果选中,取消即可.