要求:
1、你已经知道redis是什么
2、熟悉Linux基本操作(CentOS 6.5)
3、有单机redis开发相关经验
4、有主观能动性,至少熟练百度的使用
如果我们redis的压力很大,如果我们的并发高到我们读数据和写数据都有了很大压力。
那么我们可能就需要把redis分开部署,并且配置为一个『主从』的状态。
官网地址:
https://redis.io
(一定要去官网下载)
下载之后,会有一个redis-3.2.8.tar.gz
(注意我们后面整个过程不要使用root帐号,我这里是在一个叫’admin’的用户下’)
1、解压
tar zxvf redis-3.2.8.tar.gz
2、进入redis源码目录
cd redis-3.2.8
3、编译
根据手册
https://redis.io/download
执行命令:
make
1、在/usr/local/
下创建需要的目录
cd /usr/local
sudo mkdir redis #创建目录
注意:如果报”admin is not in the sudoers file. This incident will be reported.”错误。是因为执行sudo命令的用户不在sudoers文件的列表中。可以通过编辑sudoers文件,来解决这个问题。
切换到root帐号执行:vi /etc/sudoers
为了让admin这个用户能够执行sudo命令,在sudoers文件中加入一行:
admin ALL=(ALL) ALL
2、/usr/local/redis
目录创建成功,需要修改redis
目录所有者
sudo chown -R admin:admin redis/
3、然后在redis
目录,新建bin
和conf
目录。(不是必须的,只不是过为了方便而已)
4、把前面编译后的redis的可执行文件(在redis-3.2.8/src/
下),复制到/usr/local/redis/bin
里面去
sudo cp redis* /usr/local/redis/bin/
#拷贝redis开头的所有文件
5、redis提供给我们了一个默认的配置文件redis.conf
把它复制到/usr/local/redis/conf
目录下,并改名为6379.conf
sudo cp redis.conf /usr/local/redis/conf/6379.conf
6、删除一些不必要的文件(我们只需要redis的可执行文件)
sudo rm *.c
sudo rm *.o
sudo rm *.h
7、修改配置文件
sudo vi 6379.conf
修改如下几个配置:
daemonize no
修改为:
daemonize yes (后台程序方式运行)
pidfile /var/run/redis_6379.pid
修改为:
pidfile /usr/local/redis/redis_6379.pid
(把pidfile生成到有权限的目录下)
8、启动
注意文件夹路径不要搞错
/usr/local/redis/bin/redis-server /usr/local/redis/conf/6379.conf
9、配置从节点
sudo cp 6379.conf 6380.conf
修改6380.conf
修改对应的端口和pid配置
然后加入slaveof 127.0.0.1 6379
port 6379
修改为:
port 6380
pidfile /usr/local/redis/redis_6379.pid
修改为:
pidfile /usr/local/redis/redis_6380.pid
增加一行:
slaveof 127.0.0.1 6379
10、启动2个redis实例
/usr/local/redis/bin/redis-server /usr/local/redis/conf/6379.conf
/usr/local/redis/bin/redis-server /usr/local/redis/conf/6380.conf
11、启动redis客户端
去连接6379那个实例
cd /usr/local/redis/bin/
./redis-cli -h 127.0.0.1 -p 6379
role:master #本机是『主』
connected_slaves:1 #有1个『奴隶』
slave0:ip=127.0.0.1,port=6380,state=online,offset=11957,lag=1
#"从"服务器iP地址和端口是
12、新增
set name zhangsan
#读取
get name
13、然后访问6380那个实例
./redis-cli -h 127.0.0.1 -p 6380
get name
我们发现这2个实例已经完成了数据的同步。
如果我们要在从服务器
写入
set name lisi
#会提示:(error) READONLY You can't write against a read only slave.
#因为从服务器只有读权限,我们做的就是redis的读写分离啊
我们这里演示是在一台机器上,分了2个端口,真实开发肯定是2台机器了,不然分离就没有意义了。