Redis主备安装

采用主备部署方式,Master不做数据持久化操作,仅Slave做数据持久化操作,Slave采用AOF二进制日志文件作为持久化方案,默认每秒持久化一次。


  • 安装

1. 下载源代码文件redis-2.8.19.tar.gz 

2. 解压tar -xzvf redis-2.8.19.tar.gz

3. 进入目录 cd redis-2.8.19
4. 编译make
5. 安装 make install
6. 创建数据目录mkdir data
7. 创建日志目录 mkdir logs
主备机器上安装一样,略。


  • 配置

Master机器redis.conf配置

属性

描述

daemonize

yes

启动进程为后台进程

port

6379

端口,6379为默认端口

logfile

"/opt/oracle/redis-2.8.19/logs/redis.log"

日志文件

databases

1

数据库个数

dbfilename

"dump_master.rdb"

数据dump文件

dir

"/opt/oracle/redis-2.8.19/data"

数据文件所在目录

maxclients

10000

最大连接数

#save 900 1

不打开此属性

不打开快照持久化方式(Master不做持久化)

#save 300 10

不打开此属性

不打开快照持久化方式(Master不做持久化)

#save 60 10000

不打开此属性

不打开快照持久化方式(Master不做持久化)

appendonly

no

不打开二进制日志文件(Master不做持久化)

maxmemory

8gb

物理内存的一半

# 1k => 1000 bytes

# 1kb => 1024 bytes

# 1m => 1000000 bytes

# 1mb => 1024*1024 bytes

# 1g => 1000000000 bytes

# 1gb => 1024*1024*1024 bytes

maxmemory-policy

noeviction

内存不够用时,写时返回error,读取操作正常

Slave机器redis.conf配置

属性

描述

daemonize

yes

启动进程为后台进程

port

6379

端口,6379为默认端口

logfile

"/opt/oracle/redis-2.8.19/logs/redis.log"

日志文件

databases

1

数据库个数

dbfilename

"dump_master.rdb"

数据dump文件

dir

"/opt/oracle/redis-2.8.19/data"

数据文件所在目录

maxclients

10000

最大连接数

#save 900 1

不打开此属性

不打开快照方式持久化方式

#save 300 10

不打开此属性

不打开快照方式持久化方式

#save 60 10000

不打开此属性

不打开快照方式持久化方式

slaveof <master ip> <port>

slaveof 192.168.126.137 6379

IP和端口为MasterIP和端口

appendonly

yes

打开二进制日志文件作为持久化方式

appendfsync

everysec

每间隔1秒钟持久化一次数据

appendfilename

"appendonly_slave.aof"

二进制日志文件名称

maxmemory

8gb

物理内存的一半

maxmemory-policy

noeviction

 

Master机器上sentinel.conf配置

属性

描述

port

16379

监视哨端口

daemonize

yes

启动的进程为后台进程

logfile

"/opt/oracle/redis-2.8.19/logs/sentinel.log"

日志文件

sentinel monitor <master-name> <ip> <redis-port> <quorum>

sentinel monitor mymaster 127.0.0.1 6379 1

IP和端口为MasterIP地址和端口,mymaster为集群名称,可以修改为想要的名称,客户端访问时需要这个名称

sentinel down-after-milliseconds <master-name> 30000

sentinel down-after-milliseconds mymaster 30000

master-name为一个统一的集群名称

sentinel failover-timeout <master-name> 180000

sentinel failover-timeout mymaster 180000

sentinel parallel-syncs <master-name> <numslaves>

sentinel parallel-syncs mymaster 1

Slave机器上sentinel配置

Slave机器上的sentinel.conf配置同Master机器上的sentinel.conf配置一样,配置同上。


  • 启动

命令

描述

备注

redis-server redis.conf

启动Master主机

 

redis-server redis.conf

启动Slave主机

 

redis-sentinel sentinel.conf

启动Master主机上的监视哨

监视哨进程可单独部署在另外的机器上,只有在过半数的监视哨存活的情况下才能进行主备切换。

redis-sentinel sentinel.conf

启动Slave主机上的监视哨


  • 验证

1. 进入master控制台 redis-cli –p 6379
2. 设置一个值 set foo car
3. 取出这个值 get foo
4. 进入slave控制台 redis-cli –p 6379
5. 取出这个值 get foo
如果主备机器上均能取出这个值,则安装部署已经成功。


  • Jedis使用
<bean id="jedisPoolConfig" class="redis.clients.jedis.JedisPoolConfig">
	<property name="maxTotal" value="30" />
	<property name="maxIdle" value="10" />
	<property name="minIdle" value="10" />
	<property name="blockWhenExhausted" value="true"></property>
	<property name="maxWaitMillis" value="3000" />
	<property name="testOnBorrow" value="false" />
	<property name="testOnReturn" value="false" />
	<property name="testWhileIdle" value="false" />
</bean>
<bean id="jedisSentinelPool" class="redis.clients.jedis.JedisSentinelPool">
	<constructor-arg index="0" value="mymaster" />
	<constructor-arg index="1">
		<set>
			<value>192.168.126.151:16379</value>
			<value>192.168.126.151:26379</value>
		</set>
	</constructor-arg>
	<constructor-arg index="2" ref="jedisPoolConfig" />
	<constructor-arg index="3" type="int" value="15000" />
</bean>
@Test
public void test0() {
	Jedis jedis = null;
	try {
		jedis = jedisSentinelPool.getResource();
		jedis.set("1111", "22222value");
	} catch (Exception e) {
		e.printStackTrace();
	} finally{
		try {
			jedis.close();
		} catch (Exception e) {
		}
	}
}


转载于:https://my.oschina.net/u/1274122/blog/402276

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值