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. 配置文件常用的配置项
配置项名称 | 配置项值范围 | 配置项说明 |
---|---|---|
daemonize | yes,no | yes表示启用守护进程,默认是no即不以守护进程方式运行。其中Windows系统下不支持启用守护进程方式运行 |
port | 指定 Redis 监听端口,默认端口为 6379 | |
bind | 绑定的主机地址,如果需要设置远程访问则直接将这个属性备注下或者改为bind * 即可,这个属性和下面的protected-mode控制了是否可以远程访问 。 | |
protected-mode | yes,no | 保护模式,该模式控制外部网是否可以连接redis服务,默认是yes,所以默认我们外网是无法访问的,如需外网连接rendis服务则需要将此属性改为no。 |
timeout | 300 | 当客户端闲置多长时间后关闭连接,如果指定为 0,表示关闭该功能 |
loglevel | debug,verbose,notice,warning | 日志级别,默认为 notice |
databases | 16 | 设置数据库的数量,默认的数据库是0。整个通过客户端工具可以看得到 |
rdbcompression | yes,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 ,停用后并查看此时状态,是停用的状态。