一、浩言
一个人不能既想赢得漂亮,而又那么的害怕失败。
----------------《不畏将来不恋过去》
**二、背景
由于要配合其他业务线上线,,周末加班,所以了在配合基础上,自己就在两台测试服务器上redis的集群配置,一台主一台从。应该说初步配置成功。代码配置还在进行中,先把redis中的配置记载下。
三、redis配置
3.1按照之前的linux安装系列之redis安装好redis之后,进行配置,进入到redis的目录,由于是公司测试服务器,博主只有在这个目录的权限,所以期间有要按照的问题都自己先找出问题,让运维安装了,所以我只有"/usr/local/redis"目录的权限,所以操作了都在这个目录下面了。
cp redis.conf redis-16379.conf
vim redis-16379.conf
配置redis-16379.conf,修改如下
bing 10.10.39.104 127.0.0.1
port 16379
unixsocket /usr/local/redis/data/socket/redis-16379.sock
unixsocketperm 755
pidfile /usr/local/redis/data/pid/redis_16379.pid
dbfilename dump16379.rdb
dir /usr/local/redis/data/16379/
daemonize yes
slaveof 10.10.39.104 16379
这里指定了主服务的地址及端口
3.2 验证主从
先启动主redis
启动从服务器,可以在住的界面看到从已经连上,并且在从的里面也可以看到连上住了
如果没有连接上,从中将会尝试重连操作。
现在来测试主从是否成功:
进入主的客户端
./src/redis-cli -p 16379
进入从的客户端
./src/redis-cli -p 16380
输入info命令可以看到如下信息
另外上面可以看到一个错误如下:
(error) READONLY You can't write against a read only slave.
也就是说在从上只能读取,不能设置数据。文档中的说明如下
# Since Redis 2.6 by default slaves are read-only.
#
# Note: read only slaves are not designed to be exposed to untrusted clients
# on the internet. It's just a protection layer against misuse of the instance.
# Still a read only slave exports by default all the administrative commands
# such as CONFIG, DEBUG, and so forth. To a limited extent you can improve
# security of read only slaves using 'rename-command' to shadow all the
# administrative / dangerous commands.
3.3 设置密码
此时我设置了16379中的密码
requiredpass 123456
重启后从服务器就开始报错如下
现在连接16379的客户端
修改16380的配置环境如下
masterauth 123456
重新启动,done!!!
四、命令行形式加入主从
显示连接成功
五、主从?集群?
原本以为自己安装的一主一从就是集群的方式,可是发现还是有很大区别。
自己在代码中以集群的方式连接,结果是报错如下:
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'connectionFactory' defined in class path resource [applicationContext-bean.xml]: Invocation of init method failed; nested exception is redis.clients.jedis.exceptions.JedisDataException: ERR This instance has cluster support disabled
所以就在网上查找了下答案,我代码里面是以集群的方式来连接的,但是redis的配置却并不是所谓的集群,我修改redis的节点
cluster-enabled yes
在启动从的时候报错如下
FATAL CONFIG FILE ERROR
Reading the configuration file, at line 268
'slaveof 10.10.39.104 16379'
slaveof directive not allowed in cluster mode
这句话代表slaveof指定不能再集群模式中使用
最后看了下slaveof是代表主从复制而已,让一个redis的实例成为另外一个redis实例的副本。
但是这个可以配置一个哨兵进行高可用见下一篇文章
六、redis相关文章
http://redis.majunwei.com/ducumtenation.html
http://blog.csdn.net/gqtcgq/article/details/50273431
七、浩语
__
__ _ ____ __| |__ _____ ___
\ \/ \/ / | \ | \\__ \ / _ \
\ /| | / Y \/ __ \( <_> )
\/\_/ |____/|___| (____ /\____/
\/ \/
任何事情都是要靠努力和用心。