要求:
1、你已经知道redis是什么
2、熟悉Linux基本操作(CentOS 6.5)
3、有单机redis开发相关经验
4、有主观能动性,至少熟练百度的使用
redis主从配置初步:2个节点主从
如果我们redis的压力很大,如果我们的并发高到我们读数据和写数据都有了很大压力。
那么我们可能就需要把redis分开部署,并且配置为一个『主从』的状态。
首先我们要安装redis
官网地址:
(一定要去官网下载)
下载之后,会有一个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、编译
根据手册
执行命令:
make
编译好后会在src
目录生成一些可执行文件
为了方便,我们把一些文件拷贝到/usr/local/redis中
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
连上之后输入:info
命令
可以从中看到很多信息,比如:
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台机器了,不然分离就没有意义了。
<link rel="stylesheet" href="https://csdnimg.cn/release/phoenix/template/css/markdown_views-ea0013b516.css"> </div>