redis安装环境
redis是C语言开发,建议在linux上运行。
- 安装redis需要先将官网下载的源码进行编译,编译依赖gcc环境,如果没有gcc环境,需要安装gcc
yum install gcc-c++
2. 下载源码包
wget http://download.redis.io/releases/redis-3.2.9.tar.gz(根据需要下载自己版本)
3.解压源码
tar -zxvf redis-3.2.9.tar.gz
4.进入解压后的目录进行编译
cd redis-3.2.9
5.安装到指定目录,如 /usr/local/redis
make PREFIX=/usr/local/redis install
6.拷贝配置文件到安装目录下进入源码目录,里面有一份配置文件 redis.conf,然后将其拷贝到安装路径下
cd /usr/local/redis
mkdir conf
cp /home/tools/redis-3.2.9/redis.conf /usr/local/redis/conf/
redis启动
前端模式启动
直接运行bin/redis-server将以前端模式启动,前端模式启动的缺点是ssh命令窗口关闭则redis-server程序结束,不推荐使用此方法。如下图:
后端模式启动
修改redis.conf配置文件, daemonize yes 以后端模式启动。
执行如下命令启动redis:(要在安装目录中)
./bin/redis-server ./redis.conf
启动多个redis进程
启动多个redis进程意义:一个redis代表一个redis服务(服务器)。
方法1:
启动时指定端口可在一台服务器启动多个redis进程。(接着上面6379的redis)
./bin/redis-server ./redis.conf --port 6380
方法2(推荐此方法):
- 创建多个redis目录,以端口号命名,比如:创建6379、6380两个目录,将redis的安装文件bin和conf中文件拷贝至这两个目录。
- 修改6379目录下的redis.conf设置端口号为6379
- 修改6380目录下的redis.conf设置端口号为6380
- 启动6379和6380目录下的redis-server程序:
cd 6379
./bin/redis-server . /redis.conf
cd 6380
./bin/redis-server . /redis.conf
redis停止
强行终止Redis进程可能会导致redis持久化数据丢失。正确停止Redis的方式应该是向Redis服务发送SHUTDOWN命令,方法为:
./bin/redis-cli shutdown save
连接本机6379端口的redis服务执行shutdown 停止
save:在停止redis服务之前将所有的数据持久化保存。
停止6380的redis,执行:
./bin/redis-cli -p 6380 shutdown save
redis客户端
学习意义:redis是服务端,要操作服务端(存取数据)是通过客户端。
在redis的安装目录中有redis的客户端,即redis-cli(Redis Command Line Interface),它是Redis自带的基于命令行的Redis客户端。
连接redis服务端
执行bin/redis-cli连接redis服务端:(-h ip 根据实际输入)
到此redis的安装和redis服务的启动和客服端的连接就完毕了。
复制:
通常为被复制方(master)主动将数据发送到复制方(slave),复制方接收到数据存储在当前实例,最终目的是为了保证双方的数据一致,同时也是降低了master的压力。
Redis的复制方式有两种,一种是主(master)-从(slave)模式,一种是从(slave)-从(slave)模式.
复制流程图
1、slave向master发送sync命令。
2、master开启子进程执行bgsave写入rdb文件,同时将子进程接收到的写命令缓存起来。
3、子进程写完,父进程得知,开始将RDB文件发送给slave。
4、master发送完RDB文件,将缓存的命令也发给slave。
5、master增量的把写命令发给slave。
主从复制:
第1步:cp reids.conf redis2.conf(复制两个redis.conf配置文件,一个用来作为master的,一个是slave,我是使用上面启动多个redis进程的方法2的)
第2步:Vim redis2.conf(slave)修改6380中配置文件让6380作为6379的从机
第3步:slaveof 192.168.0.12 6379(master的地址)
第4步:Vim redis.conf (master)6379
第5步:bind 0.0.0.0 #无ip 都可以访问(或者是本机的ip因为是一个主机模拟的)
第6步:./redis-server ../redis.conf #master(启动6379的redis)
第7步./redis-server ../redis.2conf #slave (启动6380的redis)
Ps:是否成功set get请求来判断或执行info命令role
从上面看6379是作为主机master了,我们再看看6380的
判断是否成功:
1、master客户端set值,slave客户端能不能获取到
2、config get 'slaveof*'
到此redis的master和slave就搭建完毕。