Redis安装与配置

Redis是一个C实现的基于内存、可持久化的键值对数据库,在分布式服务中常作为缓存服务。本篇将介绍在CentOS下如何从零开始安装到配置启动服务。

一、安装

Redis的安装推荐下载源码编译安装。

进入下载的目录,使用wget下载

1
2
[root@localhost ~]# cd /usr/local/src/
[root@localhost src]# wget http://download.redis.io/releases/redis-4.0.10.tar.gz

解压并移动至/usr/local/目录下

1
2
[root@localhost src]# tar zxvf redis-4.0.10.tar.gz
[root@localhost src]# mv redis-4.0.10 /usr/local/redis

进入redis目录,使用make命令编译

1
2
[root@localhost src]# cd /usr/local/redis
[root@localhost redis]# make

编译完成后在src目录下会生成两个文件redis-serverredis-cli
然后进入src目录,执行make install,这时会把这些可执行程序拷贝到/usr/local/bin目录下,由于/usr/local/bin是在系统的环境变量$PATH下定义的,因此终端在任意位置就可以执行redis-server和redis-cli了。

1
2
[root@localhost redis]# cd src 
[root@localhost src]# make install

经过以上步骤redis已经安装完毕。

redis文件意义作用
文件名 作用
redis-server redis服务,启用redis服务
redis-cli redis客户端,连接redis服务,进行CURD等操作
redis-sentinel redis实例的监控管理、通知和实例失效备援服务
redis-benchmark 性能测试工具
redis-check-aof AOF方式持久化,使用此文件修复
redis-check-rdb RDB方式持久化,使用此文件修复

使用启动redis-server,并使用redis-cli连接操作

1
2
3
4
5
[root@localhost ~]# redis-server
[root@localhost ~]# redis-cli
127.0.0.1:6379> PING
PONG
127.0.0.1:6379>

此时redis服务已经正常工作,如果redis服务未启动,运行redis-cli时会报Could not connect to Redis at 127.0.0.1:6379: Connection refused的错误。

二、 配置开机自动启动

如果需要在系统启动时自动启动redis,需要将redis服务作为守护进程(daemon)来运行。此时需要修改redis配置文件redis.conf。文件位置在/usr/local/redis/redis.conf

1
[root@localhost ~]# vim /usr/local/redis/redis.conf

其中两个重要的参数daemonize默认值是falsepidfile默认值是pidfile /var/run/redis_6379.pid
搜索找到daemonize 把后面的值no改为yes

daemonize介绍

daemonize为守护进程,默认是no。
daemonize 设置yes或者no区别
    
daemonize:yes:redis采用的是单进程多线程的模式。当redis.conf中选项daemonize设置成yes时,代表开启守护进程模式。在该模式下,redis会在后台运行,并将进程pid号写入至redis.conf选项pidfile设置的文件中,此时redis将一直运行,除非手动kill该进程,服务运行中该文件(pidfile)就存在,服务一旦停止该文件就自动删除,因而可以用来判断redis是否正在运行。
    
daemonize:no: 当daemonize选项设置成no时,当前界面将进入redis的命令行界面,exit强制退出或者关闭连接工具(putty,xshell等)都会导致redis进程退出

编辑后保存退出。

生产环境中推荐使用启动脚本方式启动redis服务,接下来需要配置一个管理启动、关闭、重启的一个脚本。redis源码里已经提供了一个初始化脚本,位置在/usr/local/redis/utils/redis_init_script。

大致查看一下脚本内容

1
2
3
4
5
6
7
8
9
10
#redis服务器监听的端口
REDISPORT=6379
#redis服务端所在位置
EXEC=/usr/local/bin/redis-server
#redis客户端所在位置
CLIEXEC=/usr/local/bin/redis-cli
#Redis的PID文件位置,可以把${REDISPORT}修改为文件名
PIDFILE=/var/run/redis_${REDISPORT}.pid
#redis的配置文件位置,可以把${REDISPORT}修改为文件名
CONF="/etc/redis/${REDISPORT}.conf"

根据启动脚本,将修改好的配置文件复制到指定目录下,另外看到这里conf的路径,我们需要把redis目录下的redis.conf文件拷贝到/etc/redis/6379.conf

1
2
[root@localhost ~]# mkdir /etc/redis
[root@localhost ~]# cp /usr/local/redis/redis.conf /etc/redis/6379.conf

接着将启动脚本复制到/etc/init.d目录下,将启动脚本命名为redisd(通常都以d结尾表示是后台自启动服务)。

1
[root@localhost ~]# cp /usr/local/redis/utils/redis_init_script /etc/init.d/redisd

在/etc/init.d下的脚本基本都是在系统自动启动的服务,现在设置redis为开机自启动

1
[root@localhost zhxilin]# chkconfig redisd on

执行chkconfig redisd on 可能会报错误: service redisd does not support chkconfig

解决方法:在启动脚本开头添加如下两行注释修改其运行级别

1
2
3
#!/bin/sh
# chkconfig: 2345 90 10
# description: Redis is a persistent key-value database

保存完重新拷贝到/etc/init.d/redisd,再次运行chkconfig redisd on。

配置后,可以执行以下命令测试redis服务是否设置成功:

1
2
3
4
5
6
#设置为开机自启动服务器
[root@localhost ~]# chkconfig redisd on
#启动redis服务
[root@localhost ~]# service redisd start
#关闭redis服务
[root@localhost ~]# service redisd stop

等价于

1
2
3
4
#启动redis服务
[root@localhost ~]# /etc/init.d/redisd start
#关闭redis服务
[root@localhost ~]# /etc/init.d/redisd stop