# redis安装篇
## 单机安装
### 环境说明
- 操作系统:redhat6.4
### 获取安装包
1. 从redis官网下载对应的版本,下载地址:[http://download.redis.io/releases/](http://download.redis.io/releases/)
2. 从公司获取现成的版本,本次培训使用的redis-3.2.1版本
### 安装依赖
使用yum自动安装依赖的包,请先配置好yum仓库,不然手工安装一个个依赖包会非常浪费时间。
``` bash
yum -y install cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make gcc-c++ libstdc++-devel tcl zlib-devel
```
### 安装步骤
注意:安装时使用root用户安装,实际生产环境中请新建用户(redis或者cache等)进行管理。
以下使用root用户安装
``` bash
#1、上传安装包至/opt目录
cd /opt
#2、解压安装包
tar -xzvf redis-3.2.1.tar.gz
cd redis-3.2.1
#3、编译
make
make install
#4、配置命令
#copy src目录如下文件到/usr/local/bin目录,方便直接使用这些命令
cd src
cp redis-server /usr/local/bin
cp redis-sentinel /usr/local/bin
cp redis-cli /usr/local/bin
cp redis-benchmark /usr/local/bin
cp redis-check-aof /usr/local/bin
cp redis-trib.rb /usr/local/bin
```
### 配置文件
#### 新建redis管理用户
本文档使用redis用户管理redis服务。
``` bash
#新建用户
useradd -d /home/redis -m redis
#修改密码
passwd redis
```
#### 修改配置文件
以下操作使用redis用户操作
``` bash
#新建配置文件目录
mkdir -p /home/redis/standalone
#拷贝配置文件
cp /opt/redis-3.2.1/redis.conf /home/redis/standalone
#修改配置文件
vi /home/redis/standalone/redis.conf
#修改如下配置:
#端口号
port 6379
#修改默认绑定ip,修改为自己服务器的ip,不然客户端使用ip地址是无法访问的
bind 192.168.88.135
# 备份文件目录
dir /home/redis/standalone/
# 修改如下,默认为no,此配置表示后台启动
daemonize yes
#修改进程号文件,以端口号区分
pidfile /home/redis/standalone/redis.pid
#修改日志文件路径
logfile "/home/redis/standalone/redis.log"
```
#### 启动redis服务
以下操作使用redis用户操作
``` bash
cd /home/redis/standalone
#指定redis配置文件
redis-server redis.conf
```
查看进程:
```
[redis@zwb-redhat-6 standalone]$ ps -ef|grep redis-server
redis 2721 1 0 10:18 ? 00:00:00 redis-server 192.168.88.135:6379
redis 2726 2657 0 10:18 pts/1 00:00:00 grep redis-server
```
#### 停止redis服务
```
kill -9 进程号
```
#### 客户端端测试
``` bash
[redis@zwb-redhat-6 standalone]$ redis-cli -h 192.168.88.135 -p 6379
#存值
192.168.88.135:6379> set cust_no 123
OK
#获取值
192.168.88.135:6379> get cust_no
"123"
192.168.88.135:6379>
```
## 集群安装
### 前提条件
- 集群安装需要redis3.0+的版本支持
- 完成单机安装
- redis3.0集群需要ruby环境支持,需要安装ruby环境
### 安装ruby
使用root用户安装
``` bash
#上传ruby-2.4.0.tar.gz安装包至/opt目录
#安装ruby
cd /opt
tar -xzvf ruby-2.4.0.tar.gz
cd ruby-2.4.0
./configure
make
make install
#上传redis-3.2.1.gem至/opt目录
cd /opt
gem install --local redis-3.2.1.gem
```
### 修改配置文件
``` bash
#新建配置文件目录
mkdir -p /home/redis/cluster/6379
#拷贝单机的配置文件
cp /home/redis/standalone/redis.conf /home/redis/cluster/6379
#修改配置文件
#端口号
port 6379
#修改默认绑定ip,修改为自己服务器的ip,不然客户端使用ip地址是无法访问的
bind 192.168.88.135
# 修改如下,默认为no,此配置表示后台启动
daemonize yes
# 备份文件目录
dir /home/redis/cluster/6379/
#修改进程号文件,以端口号区分
pidfile /home/redis/cluster/6379/redis.pid
#修改日志文件路径
logfile "/home/redis/cluster/6379/redis.log"
#开启集群
cluster-enabled yes
#指定集群的配置文件
cluster-config-file "/home/redis/cluster/6379/nodes.conf"
#集群中节点挂了,不影响整个集群,可以正常访问其他节点的数据
cluster-require-full-coverage no
```
### 集群中其他节点安装
集群中其他节点安装,参考以上的安装步骤,修改对应配置文件路径和端口即可
### 集群启动脚本
``` bash
echo [`date`]开始启动redis集群...
startRedis(){
port=$1
cmd="redis-server /home/redis/cluster/${port}/redis.conf"
echo [`date`]${cmd}
`${cmd}`
}
startRedis 6379
startRedis 6479
startRedis 6579
startRedis 6380
startRedis 6480
startRedis 6580
echo [`date`]redis集群启动完成!
```
### 创建集群
使用启动脚本,启动本机上的所以redis节点
``` bash
redis-trib.rb create --replicas 1 192.168.88.135:6379 192.168.88.135:6479 192.168.88.135:6579 192.168.88.135:6380 192.168.88.135:6480 192.168.88.135:6580
#--replicas 1:指定了master从库的数量为1,前面3个ip和端口表示是主服务,后面3个表示是从服务
```
## 安装问题汇总
### make编译时出现错误
``` bash
zmalloc.h:50:31: 错误:jemalloc/jemalloc.h:没有那个文件或目录
在部署redis出现如题所述问题
```
解决方法:编译时使用如下命令
```
make MALLOC=libc
```
### cannot load such file -- zlib
```
[root@zwb-redhat-6 opt]# gem install redis-3.2.gem
ERROR: Loading command: install (LoadError)
cannot load such file -- zlib
ERROR: While executing gem ... (NoMethodError)
undefined method `invoke_with_build_args' for nil:NilClass
```
``` bash
yum install zlib-devel
cd ruby安装目录/ext/zlib
ruby extconf.rb
make
make install
```