前言:项目中用到的缓存数据库是同事自己写的,虽然可用,但是很多特性都感觉差了一点意思,仅仅是可用。于是乎萌生一个想法,能不能用redis来替代我们自己的内存数据库。
这里尝试使用一下redis的主从复制的特性。
在选择搭建redis集群的时候,为了方便,选用docker来组建一个简单的redis集群,节点也不太多,只需要两个节点,一个master,一个slave。
开始尝试:
安装docker的过程就赘述了。
拉取镜像
首先将redis的镜像拉下来
执行命令:
<code>
docker pull redis
</code>
创建master节点
由于redis镜像里面没有redis.conf文件,需要提前准备redis.conf配置文件。
从redis官网下载最新的Stable版本的redis,当前版本是redis 3.2.解压下载的软件包,获取到redis.conf文件。
默认的redis.conf文件启用的安全配置,为了方便测试,需要先将安全配置注释掉。
拷贝一份redis.conf文件,命名为redis_master.conf.
在redis_master.conf中注释掉如下两行配置:
bind 127.0.0.1
protected-mode yes
并修改如下配置项:
daemonize no 改为 daemonize yes
启动一个名为redis-master的docker容器:
<code>
docker run -v configdir/redis_master.conf:/usr/local/etc/redis/redis.conf -it --name redis-master redis /bin/bash
</code>
注:configdir改成配置文件所在的路径。
容器启动后,在容器中运行命令,启动redis-server
<code>
redis-server /usr/local/etc/redis/redis.conf
</code>
在redis中增加一条记录:
在redis-cli中执行:set master master_test
检查记录是否创建成功:
在redis-cli中执行:get master
如果成功了可以看到输出结果是master_test
创建slave节点
同样,根据默认的redis.conf文件复制出一份配置文件:redis_slave.conf
在redis_slave.conf中注释掉如下两行配置:
bind 127.0.0.1
protected-mode yes
并修改如下配置项:
daemonize no 改为 daemonize yes
#slaveof <masterip> <masterport> 改为 slaveof master 6379
启动一个名为redis-slave的docker容器:
<code>
docker run -v configdir/redis_slave.conf:/usr/local/etc/redis/redis.conf -it --name redis-slave --link redis-master:master redis /bin/bash
</code>
注:configdir改成配置文件所在的路径。
容器启动后,在容器中运行命令,启动redis-server
<code>
redis-server /usr/local/etc/redis/redis.conf
</code>
验证slave节点是否能够查询到master节点增加的记录
这里我们可以看看能否在slave节点上查到master节点里面增加的记录
在redis-cli中执行:get master
可以看到输出的结果是:"master_test"
一个简单的主从复制集群搭建完成了。
完!