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/ 本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接. 阅读 ...
随机推荐
- Starting MySQL. ERROR! The server quit without updating PID file如何解决
今天数据库突然挂了.重启提示: Starting MySQL. ERROR! The server quit without updating PID file (/usr/local/mysql/v ...
- hibernate注解JPA
1.JPA与hibernate 什么是JPA ? java persistence api :java持久化api,同一的ORM规范,是由sun公司指定的规范接口,hibernate实现了JPA规范. ...
- sp_addlinkedserver创建远程服务器查询
远程服务器查询可以分两步完成: 1.建立连接服务器 exec sp_addlinkedserver @server='Test_Server', --被访问的服务器别名 @srvproduct='', ...
- 抽象工厂模式&简单工厂模式
抽象工厂模式 优点: 如IFactory factory=new AccessFactory(),在一个应用中只需要初始化一次,这就使得改变应用的时候变得非常容易:其次它让具体的创建实例过程与客户端分 ...
- HashMap和Hashtable的比较
相同点 HashMap和Hashtable都是存储“键值对(key-value)”的散列表,而且都是采用拉链法解决hash冲突的.但是1.8中,hashmap引入了红黑树.Hashtable没有引入红 ...
- CSS 面包屑导航栏
做之前,先看一下效果图. demo01.png 首先,书写好 HTML 代码. <div id="crumbs"> <ul> <li><a ...
- SVM个人学习总结
SVM个人学习总结 如题,本文是对SVM学习总结,主要目的是梳理SVM推导过程,以及记录一些个人理解. 1.主要参考资料 [1]Corres C. Support vector networks[J] ...
- join......on 后面的and 和where的区别
a.where 是在两个表join完成后,再附上where条件. b. and 则是在表连接前过滤A表或B表里面哪些记录符合连接条件,同时会兼顾是left join还是right join.即 假如是 ...
- SharePoint 2013 - Cross-domain Library
首先,参考链接:https://msdn.microsoft.com/en-us/library/office/fp179893.aspx?f=255&MSPPError=-214721739 ...
- 【Linux】Linux 在线安装yum
Linux如何安装软件? 一.RPM安装 优点: 安装过程很简单 缺点: 需要自己寻找和系统版本对应的RPM包 安装过程中需要解决包的依赖问题(例如tftp包) 二.yum在线安装 软件包仓库 仓库的 ...