CentOS7下安装Redis

一、安装redis

第一步:下载redis安装包

1.在Linux终端输入命令wget下载指定链接,如果weget命令报错,说明没有wget插件,可以选择远程发送redis安装包

wget http://download.redis.io/releases/redis-3.2.8.tar.gz

第二步:解压压缩包

找到压缩包位置,进入压缩包所在目录
解压命令:

tar -zvxf redis-3.2.8.tar.gz

解压后输入ls列出所有目录可以看到一个已解压的文件夹

补充:移动redis目录,一般都会将redis目录放置到 /usr/local/redis目录,所以这里输入下面命令将目前在/root目录下的redis-3.2.8文件夹更改目录,同时更改文件夹名称为redis

 mv  /root/redis-3.2.8  /usr/local/redis

第三步:yum安装gcc依赖

查看是否有gcc依赖:

gcc -v

如果有就跳过第三步

没有则使用以下命令安装c++编译环境依赖

yum install gcc

遇到选择,输入y即可

第四步:编译安装

进入解压目录

cd redis-3.2.8

编译

make

安装
输入以下命令

make PREFIX=/usr/local/redis install

这里多了一个关键字
PREFIX:这个关键字的作用是编译的时候用于指定程序存放的路径。比如我们现在就是指定了redis必须存放在/usr/local/redis目录。假设不添加该关键字Linux会将可执行文件存放在/usr/local/bin目录,库文件会存放在/usr/local/lib目录,配置文件会存放在/usr/local/etc目录。

其他的资源文件会存放在usr/local/share目录。这里指定好目录也方便后续的卸载,后续删除redis可以直接使用rm -rf /usr/local/redis

二、启动redis的两种方式

先切换到redis src目录下

cd src

1、直接启动redis

./redis-server 

redis启动成功,但是这种启动方式需要一直打开窗口,不能进行其他操作,不太方便。

按 ctrl + c可以关闭窗口。

2、后台启动redis,并根据redis.conf的配置方式启动

./bin/redis-server & ./redis.conf

两种方式区别是有无带&符号和是否使用配置文件的配置方式启动的区别。

redis-server 后面是配置文件,目的是根据该配置文件的配置启动redis服务。

redis.conf配置文件允许自定义多个配置文件,通过启动时指定读取哪个即可。

可以通过redis-cli命令进入redis控制台后通过CONFIG GET *的方式读取所有配置项。 如下:

CONFIG GET *

查看Redis是否正在运行

1、采取查看进程方式
ps -aux | grep redis
ps -ef| grep redis
2、采取端口监听查看方式
netstat -lanp | grep 6379

关闭redis服务进程

1.使用kill命令

首先使用ps -aux | grep redis查看redis进程可以看到redis的pid为18714

ps -aux | grep redis
root     18714  0.0  0.1 141752  2008 ?        Ssl  13:07   0:00 ./redis-server 127.0.0.1:6379
root     18719  0.0  0.0 112644   968 pts/0    R+   13:09   0:00 grep --color=auto redis

使用kill命令根据id杀死进程

kill 18714
2.使用redis-cli

redis-cli是连接本地redis服务的一个命令,通过该命令后可以进入redis的脚本控制台
启动位置和服务位置一个相同

./redis-cli -a 123456

使用-a命令可以在进入控制台的时候加上密码,这样在进入控制台后就不用使用auth命令输入密码了

输入exit可以退出redis脚本控制台

三、redis.conf配置文件

1. 配置文件常用的配置项

配置项名称配置项值范围配置项说明
daemonizeyes,noyes表示启用守护进程,默认是no即不以守护进程方式运行。其中Windows系统下不支持启用守护进程方式运行
port指定 Redis 监听端口,默认端口为 6379
bind绑定的主机地址,如果需要设置远程访问则直接将这个属性备注下或者改为bind * 即可,这个属性和下面的protected-mode控制了是否可以远程访问 。
protected-modeyes,no保护模式,该模式控制外部网是否可以连接redis服务,默认是yes,所以默认我们外网是无法访问的,如需外网连接rendis服务则需要将此属性改为no。
timeout300当客户端闲置多长时间后关闭连接,如果指定为 0,表示关闭该功能
logleveldebug,verbose,notice,warning日志级别,默认为 notice
databases16设置数据库的数量,默认的数据库是0。整个通过客户端工具可以看得到
rdbcompressionyes,no指定存储至本地数据库时是否压缩数据,默认为 yes,Redis 采用 LZF 压缩,如果为了节省 CPU 时间,可以关闭该选项,但会导致数据库文件变的巨大。
dbfilename指定本地数据库文件名,默认值为 dump.rdb
dir指定本地数据库存放目录
requirepass设置 Redis 连接密码,如果配置了连接密码,客户端在连接 Redis 时需要通过 AUTH <password> 命令提供密码,默认关闭
maxclients设置同一时间最大客户端连接数,默认无限制,Redis 可以同时打开的客户端连接数为 Redis 进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis 会关闭新的连接并向客户端返回 max number of clients reached 错误信息。
maxmemory指定 Redis 最大内存限制,Redis 在启动时会把数据加载到内存中,达到最大内存后,Redis 会先尝试清除已到期或即将到期的 Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis 新的 vm 机制,会把 Key 存放内存,Value 会存放在 swap 区。配置项值范围列里XXX为数值。

2.修改redis.conf配置文件

找到redis.conf文件,一般在redis服务启动目录的上一级目录中
打开这个文件并修改:
vim redis.conf的路径
这里贴出关键修改代码:

# 注释掉它,以便让外网访问
# bind 127.0.0.1
# 关闭保护模式,该模式控制外部网是否可以连接redis服务,默认是yes,所以默认我们外网是无法访问的,如需外网连接rendis服务则需要将此属性改为no。
protected - mode no
# Redis默认不是以守护进程的方式运行,yes表示启用守护进程,默认是no即不以守护进程方式运行。其中Windows系统下不支持启用守护进程方式运行
# 启用守护进程后,Redis会把pid写到一个pidfile中,在/var/run/redis.pid
daemonize yes
# 当Redis以守护进程方式运行时,Redis默认会把pid写入/var/run/redis.pid文件,可以通过pidfile指定
pidfile  / var / run / redis_6379.pid
# 指定Redis监听端口,默认端口为6379
# 如果指定0端口,表示Redis不监听TCP连接
port  6379
# 工作目录.
# 指定本地数据库存放目录,文件名由上一个dbfilename配置项指定,这里可以不修改
# 则存放目录默认为redis安装目录
# 注意,这里只能指定一个目录,不能指定文件名
dir  /var/redis/6379

通过 /daemonize 查找到属性,默认是no,更改为yes即可。 (通过/关键字查找出现多个结果,在查找时使用n字符切换到下一个即可。

查找到属性后按i变更成输入模式,此时可以修改文件内容,修改完后按ESC键可以退回到正常模式,也可以按CTRL+C组合键退回到正常模式

回到正常模式后保存文件并退出查看文件模式命令:wq,这里:也是要输入。

四、外部网络访问redis配置

1.修改配置文件

注释掉它,以便让外网访问

# bind 127.0.0.1

关闭保护模式,该模式控制外部网是否可以连接redis服务,默认是yes,所以默认我们外网是无法访问的,如需外网连接rendis服务则需要将此属性改为no。

protected-mode  no

如果在第三节根据配置修改过就不用修改了。可以跳过此步。

2.配置防火墙

Redis的默认端口号6379此时是没有开放的,所有外部网络无法通过此端口访问redis,
配置防火墙如下:

1.查看开放的端口
firewall-cmd --list-ports
2 .开启指定端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent
3.重启防火墙

方式一:

firewall-cmd –reload

方式二:

systemctl reload firewalld.service

4.查看是否开放成功

firewall-cmd --list-ports

开放成功即可通过远程连接redis数据库

五、设置redis开机自启动

1.修改配置文件

把daemonize配置为yes,daemonize的默认配置是no,daemonize表示redis的运行方式是否为守护进程的方式,yes为是,no为否,也就是是否后台运行。
如果在第三节根据配置修改过就不用修改了。可以跳过此步。

2. 拷贝配置文件

在etc目录下新建redis文件夹,把redis源码文件中redis.conf配置文件复制到/etc/redis/目录下,我的配置文件的放在cd /usr/local/redis/这个路径下
新建一个redis文件夹

mkdir /etc/redis

进入redis.conf存放目录,执行命令

cp redis.conf /etc/redis/6379.conf

3. 拷贝redis源码中初始化文件redis_init_script到/etc/init.d/redis,

redis_init_script这个文件在redis目录下的utils文件夹中,
进入utils目录,执行命令

cp redis_init_script /etc/init.d/redis

4.修改/etc/init.d/redis文件内容

提示:修改方式见文章前面修改redis.conf配置文件处
在第一行位置添加以下代码,这样才能自启动服务

#chkconfig: 2345 80 90

注释的意思是,redis服务必须在运行级2,3,4,5下被启动或关闭,启动的优先级是90,关闭的优先级是80。

EXEC修改为redis的启动服务路径
CLIEXEC修改为redis-cli的启动路径
如下:

EXEC=/usr/local/redis-5.0.5/src/redis-server
CLIEXEC=/usr/local/redis-5.0.5/src/redis-cli

查看自启动服务

chkconfig --list

注册服务

chkconfig --add redis

开启自启动服务

chkconfig on

通过上面的操作后,我们就可以通过如下命令启动,启动或停止redis了

开启服务

service redis start 

停止服务

service redis stop

补充:

Linux关机启动命令

shutdown -h 10 #计算机将于10分钟后关闭,且会显示在登录用户的当前屏幕中

shutdown [-h] now #计算机会立刻关机
shutdown [-h] 22:22 #计算机会在这个时刻关机
shutdown [-r] now #计算机会立刻重启
shutdown [-r] +10 #计算机会将于10分钟后重启
reboot #重启
halt #关机

一些常见的错误解决方案

centos 报错 “Job for iptables.service failed because the control process exited with error code.”的解决办法
原因:因为centos7默认的防火墙是firewalld防火墙,不是使用iptables,因此需要先关闭firewalld服务,或者干脆使用默认的firewalld防火墙。
操作步骤:
关闭防火墙
1.systemctl stop firewalld

2.systemctl mask firewalld

在使用iptables服务

#开放443端口(HTTPS)
3.iptables -A INPUT -p tcp --dport 443 -j ACCEPT

#保存上述规则
4.service iptables save

#开启服务
5.systemctl restart iptables.service

重启防火墙(iptables)命令#service iptable restart失效

linux下执行防火墙相关指令报错:
Redirecting to /bin/systemctl restart iptables.service
1,安装systemctl:

yum install iptables-services

2,设置防火墙开机启动:

systemctl enable iptables.service

然后就可以执行以下指令了:
systemctl stop iptables
systemctl start iptables
systemctl restart iptables
systemctl reload iptables

杀死进程服务使用kill -9 24915
#检测6379端口是否在监听
netstat -lntp | grep 6379
./redis-cli shutdown ,停用后并查看此时状态,是停用的状态。

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐