Linux系统安装Redis
Linux系统安装Redis
https://www.lanmper.cn/redis/t9365
安装说明
redis 目录和安装都放到 /usr/local/redis 目录下,这样 方便后续的卸载
- 解压到指定文件夹下并且 重新命名
tar -zvxf redis-5.0.7.tar.gz -C /usr/local/redis - 指定安装目录
make PREFIX=/usr/local/redis install - 查询
gcc -v查询版本 [注意](#2.3 注意事项) (redis6以上 gcc版本不能低于 5,所以这个不行,我们需要升级它)-- 升级完成后最好重新打开一个shell窗口
$ yum install gcc-c++ ## 需要安装 gcc 通过 gcc -v 检测版本 (需要执行升级 gcc) ---- 目前centos7应该是不支持这样升级了
$ wget http://download.redis.io/releases/redis-6.0.6.tar.gz
$ tar xzf redis-6.0.6.tar.gz ## 解压
$ mv redis-6.0.6 /usr/local/redis ## 移动并且重命名(如果/usr/local/ 下存在redis文件夹 则会将redis-6.0.6 移动到/usr/local/redis目录下,所以不需要事先创建好redis文件夹)
$ cd /usr/local/redis
$ make ##编译
$ make PREFIX=/usr/local/redis install ## 安装
## 备份conf文件
$ cp /usr/local/redis/redis.conf /usr/local/redis/redis_backup.conf ### 备份conf文件
## 设置 后台启动
$ vi /usr/local/redis/redis.conf ## 配置redis为后台启动 将daemonize no 改成daemonize yes
## 设置开机启动
$ chmod +x /etc/rc.d/rc.local ## 给 rc.local 赋权,否则 开机启动无法执行
$ vi /etc/rc.local ## 在/rc.local 中添加 /usr/local/redis/bin/redis-server /usr/local/redis/redis.conf (意思就是开机调用这段开启redis的命令)
## 卸载
$ rm -rf /usr/local/redis
使用说明
- 默认端口 6379
- 启动:
/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf- 说明:如果bin 下没有 redis-server 则说明没有执行
make install
- 说明:如果bin 下没有 redis-server 则说明没有执行
- 检查是否启动:
ps -aux | grep redisnetstat -tplan | grep 6379
- 关闭
redis-cli shutdownkill -9 xxxx( 通过ps -ef|grep redis查看pid)- killall redis
https://www.cnblogs.com/hunanzp/p/12304622.html
https://www.cnblogs.com/lauhp/p/8487029.html
https://www.cnblogs.com/happywish/p/10944253.html
RedisDesktopManager : Redis桌面管理器 https://github.com/uglide/RedisDesktopManager/releases/tag/0.8.8
1.查看Redis运行
查询进程
1、采取查看进程方式
ps -aux | grep redis
结果如下图:


2、采取端口监听查看方式
netstat -lanp | grep 6379
Redis的安装查询
- 登录到您安装了Redis的服务器或计算机上。
- 打开命令行终端(Windows上是命令提示符或PowerShell,Linux/macOS上是终端)。
- 根据操作系统类型执行相应的命令:
- 在Windows上,输入以下命令并按回车键:
where redis-server - 在Linux/macOS上,输入以下命令并按回车键:
which redis-server
- 在Windows上,输入以下命令并按回车键:
- 系统将返回Redis服务器的安装路径。例如,对于Windows,它可能是类似于
C:\Program Files\Redis\redis-server.exe的路径,而对于Linux/macOS,它可能是/usr/bin/redis-server或/usr/local/bin/redis-server。
如果找不到可以尝试使用find命令来搜索Redis可执行文件,如下所示:
find / -name redis-server
这将在整个文件系统中搜索redis-server文件,并显示其路径
2.下载 Redis
2.1. 通过下载压缩包进行安装(不推荐)
- 下载地址历史: http://download.redis.io/releases/
- 官网下载最新:http://www.redis.cn/ 或者 http://www.redis.cn/download.html

2.2. 通过 wget 下载安装
文件备份在
home/software==> mkdir software如果没有 安装wget
yum -y install wget
wget http://download.redis.io/releases/redis-6.0.6.tar.gz
wget http://download.redis.io/releases/redis-4.0.8.tar.gz
2.3 注意事项
由于redis是由C语言编写的,它的运行需要C环境,因此我们需要先安装gcc
安装gcc环境
## 查询版本和检查是否安装
$ gcc -v
$ yum install gcc-c++
注意: redis6以上 gcc版本不能低于 5,所以这个不行,我们需要升级它
sudo yum install centos-release-scl
sudo yum install devtoolset-7-gcc*
scl enable devtoolset-7 bash
https://blog.csdn.net/weixin_50843918/article/details/128631662
server.c: 在函数‘writeCommandsDeniedByDiskError’中:
server.c:3826:1: 警告:在有返回值的函数中,控制流程到达函数尾 [-Wreturn-type]
}
^
server.c: 在函数‘iAmMaster’中:
server.c:5000:1: 警告:在有返回值的函数中,控制流程到达函数尾 [-Wreturn-type]
分析 由于gcc版本过低,不匹配Redis6.0以后所以无法编译
解决更新gcc到八以上
yum install centos-release-scl scl-utils-build
yum install -y devtoolset-8-toolchain
echo "source /opt/rh/devtoolset-8/enable" >>/etc/profile
升级后可以查看一下版本
升级后可以查看一下版本
gcc -v
3.解压并安装Redis
3.1 解压
tar -zvxf redis-5.0.7.tar.gz
mv redis-5.0.7 /usr/local/redis ## 移动并且重命名
3.2 编译
cd /usr/local/redis ## 进入文件夹
make ## 需要主要是在 redis 文件夹下
3.3 安装
make install
## 或者 -下面的最优
make PREFIX=/usr/local/redis install
也可以执行
make PREFIX=/usr/local/redis install这里多了一个关键字
PREFIX=这个关键字的作用是编译的时候用于指定程序存放的路径。比如我们现在就是指定了redis必须存放在/usr/local/redis目录。假设不添加该关键字Linux会将可执行文件存放在/usr/local/bin目录,库文件会存放在/usr/local/lib目录。配置文件会存放在/usr/local/etc目录。其他的资源文件会存放在usr/local/share目录。这里指定号目录也方便后续的卸载,后续直接rm -rf /usr/local/redis 即可删除redis
配置redis为后台启动
## 备份conf 文件
mkdir /usr/local/redis/myconf_backup
cp /usr/local/redis/redis.conf /usr/local/redis/myconf_backup/redis.conf
## 配置redis为后台启动 将daemonize no 改成daemonize yes
vi /usr/local/redis/redis.conf
## 修改连接ip
bind 192.168.1.132
#修改 密码
requirepass Semdo@2022
4. 将redis加入到开机启动
4.1 通过systemd 来实现开机启动
使用 systemd 服务来实现 redis服务的开机自启动
vim /etc/systemd/system/redis.service
添加下面的
[Unit]
Description=Redis In-Memory Data Store
Documentation=http://redis.io/documentation
After=network.target
[Service]
ExecStart=/usr/local/redis/bin/redis-server /usr/local/redis/conf/redis.conf
ExecStop=/usr/local/redis/bin/redis-cli -p 6379 -a Semdo@2022 shutdown
Restart=always
WorkingDirectory=/usr/local/redis
PIDFile=/usr/local/redis/redis.pid
[Install]
WantedBy=multi-user.target
启动设置
# 重新加载 systemd 配置 (为了让 systemd 识别新的服务,你需要执行以下命令)
sudo systemctl daemon-reload
# 启动 Redis 服务
sudo systemctl start redis
# 设置 Redis 服务开机自启
sudo systemctl enable redis
# 重启
sudo systemctl restart redis
#查看状态
sudo systemctl status redis
# 禁止开机自启
sudo systemctl disable redis
# 关闭
sudo systemctl stop redis
需要注意的是,下面两个配置需要保持路径一致,否则上面的 sudo systemctl start redis 启动会失败
pidfile /usr/local/redis/redis.pid
logfile /usr/local/redis/logs/redis.log
4.2 通过rc.local脚本开机
这里可能会没生效,2种可能
可能是路径配置的不对
第二目前 CentOS7 服务器的 rc.local脚本开机不自动执行 ===》 给 rc.local文件授予可执行权限
vi /etc/rc.local
## 在里面添加内容:
/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf ## (意思就是开机调用这段开启redis的命令)
解决CentOS7 服务器的 rc.local脚本开机不自动执行 ===》 给 rc.local文件授予可执行权限
## 授权
chmod +x /etc/rc.d/rc.local
## 查看启动情况
systemctl status rc-local.service
## 重启
sudo systemctl restart rc-local.service
[root@localhost ~]# systemctl status rc-local.service
● rc-local.service - /etc/rc.d/rc.local Compatibility
Loaded: loaded (/usr/lib/systemd/system/rc-local.service; static; vendor preset: disabled)
Active: inactive (dead)
Condition: start condition failed at 六 2023-03-11 21:06:11 CST; 1min 27s ago
ConditionFileIsExecutable=/etc/rc.d/rc.local was not met
[root@localhost ~]# Connection closing...Socket close.
## 赋权后 重启 然后 可以通过 systemctl status rc-local.service 进行检查
[root@localhost ~]# systemctl status rc-local.service
● rc-local.service - /etc/rc.d/rc.local Compatibility
Loaded: loaded (/usr/lib/systemd/system/rc-local.service; static; vendor preset: disabled)
Active: active (running) since 六 2023-03-11 21:09:13 CST; 1min 19s ago
Process: 1116 ExecStart=/etc/rc.d/rc.local start (code=exited, status=0/SUCCESS)
Main PID: 1129 (redis-server)
CGroup: /system.slice/rc-local.service
└─1129 /usr/local//bin/redis-server 127.0.0.1:6379
下面是2个场景,第一个是成功启动
第二个因为配置logfile,由于路径不存在导致启动失败


5. 启动redis
启动redis服务:(三种启动方式)
- 前台启动:在任何目录下执行 redis-server
- 后台启动:在任何目录下执行 redis-server &
- 启动redis服务时,指定配置文件:redis-server redis.conf & ,这种主要用于你改了配置文件的情况,比如你把默认端口号改了,你就用这个,正常也用这个
- 如果添加到systemctl服务中,则 通过
sudo systemctl start redis启动
在目录/usr/local/redis 输入下面命令启动redis
./bin/redis-server& ./redis.conf ## 台进程方式
# 或者下面的语句
/usr/local/redis/bin/redis-server /usr/local/redis/redis.conf ## 前台启动 (如在配置文件设置了daemonize属性为yes则跟后台进程方式启动其实一样)
# 启动 Redis 服务
sudo systemctl start redis
# 重启
sudo systemctl restart redis
#查看状态
sudo systemctl status redis
# 关闭
sudo systemctl stop redis
6.关闭Redis服务
方式一:杀进程
pkill redis停止redis(表示查找所有进程名包含 "redis" 的进程,并且关闭它们)方式二: 杀进程 ( 通过 ps -ef|grep redis 查看pid)
kill -9 PID方式三: 通过 redis-cli 客户端 shutdown
[root@lishihuan ~]# ./redis-cli ## 没有修改ip 默认是 127.0.0.1 ,如果修改了,则无法这样登陆
127.0.0.1:6379> shutdown ## 关闭 redis服务
not connected> exit ## 退出 redis-cli 客户端
- 方式四【如果添加到systemctl 模块,也即是 操作了上面的 设置 [redis.service](#4.1 通过systemd 来实现开机启动)】:
sudo systemctl stop redis
7. 连接客户端 redis-cli
输入exit可以退出redis脚本控制台
./redis-cli /shutdown可直接关闭redis
redis-cli是连接本地redis服务的一个命令,通过该命令后可以连接redis的脚本控制台。
redis-cli:默认连接127.0.0.1(本机)的6379端口上的redis服务。 redis-cli -p 端口号:连接127.0.0.1(本机)的指定端口上的redis服务。 redis-cli -h ip地址 -p 端口:连接指定ip主机上的指定端口的redis服务。
redis-cli -h 192.168.163.129 -p 6379 -a 123456
[root@lishihuan ~]# redis-cli ## 没有修改ip 默认是 127.0.0.1 ,如果修改了,则无法这样登陆
127.0.0.1:6379> shutdown ## 关闭 redis服务
not connected> exit ## 退出 redis-cli 客户端
#### 对于设置了IP和端口的,直接输入 redis-cli 提示无法连接
[root@lishihuan ~]# redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected>
## 下面是针对 修改了 IP和端口的登陆方式
### 输入 IP端口 密码登陆 客户端
[root@lishihuan ~]# redis-cli -h 192.168.163.129 -p 6379 -a 123456
192.168.163.129:6379>
### 登陆
[root@lishihuan ~]# redis-cli -h 192.168.163.129 -p 6379
192.168.163.129:6379> config get requirepass
(error) NOAUTH Authentication required. ## 提示需要 进行身份验证
192.168.163.129:6379> auth 123456 ## 输入密码
OK
192.168.163.129:6379>
设置密码的后登录客户端
[root@localhost bin]# ./redis-cli -a 123456 ## 这样登录会出现 下面的 这行告警,应该
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "123456"
## 应该用下面的方式登录
[root@localhost bin]# ./redis-cli
127.0.0.1:6379> auth 123456 ## 输入密码,
OK
127.0.0.1:6379>
设置ip后登录失败
当出现 "not connected>" 提示时执行新的连接命令是无效的。在这种情况下,你需要首先使用
exit命令退出当前的redis-cli,然后再执行./redis-cli -h 192.168.75.130 -p 6379 -a 123456命令重新连接到 Redis 服务器。
[root@localhost ~]# ps -ef|grep redis
root 1800 1 0 23:03 ? 00:00:00 /usr/local/redis/bin/redis-server 192.168.75.130:6379
root 1838 1818 0 23:15 pts/0 00:00:00 grep --color=auto redis
[root@localhost ~]# cd /usr/local/redis/bin
[root@localhost bin]# ls
dump.rdb redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server
[root@localhost bin]# ./redis-cli
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected> ./redis-cli -h 192.168.75.130 -p 6379 -a 123456 ## 注意 这里输入是无法登录reids-cli 客户端的,需要exit 推出后在bin目录下 执行
Could not connect to Redis at 127.0.0.1:6379: Connection refused
not connected> exit
[root@localhost bin]# ./redis-cli -h 192.168.75.130 -p 6379 -a 123456
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe. # 由于在命令行中使用明文密码的方式可能存在安全风险。建议你使用安全的方法来提供 Redis 密码
192.168.75.130:6379>
8. 修改密码&查看密码
https://www.cnblogs.com/robinli/p/9267471.html
## 找到这行,去掉注释,把foobared改为自己的密码
#requirepass foobared
设置密码 为了安全一定要设,而且这里如果不绑定ip也不设密码的话,redis是默认保护模式,只能本虚拟机访问,不允许其他ip访问
所以,redis desktop manager 无法连接,报异常 Can’t connect to redis-server
解决:修改配置文件redis.conf ,设置 密码后 找到protected-mode 选项 把yes 改成 no,然后 重启redis服务
下面的只作为了解,设置临时密码
[root@localhost bin]# ./redis-cli ## 登录客户端
127.0.0.1:6379> config get requirepass ## 查询密码
1) "requirepass"
2) ""
127.0.0.1:6379> config set requirepass 123456 ## 临时设置密码 为 123456 注意,这样设置的密码 服务器重启就会失效
OK
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) "123456"
127.0.0.1:6379>
级别设置
默认IP设置
bind 0.0.0.0表示Redis 会接受任何网络接口的连接,包括本地和外部接口
- bind设置IP
- port 设置端口
- daemonize: yes表示启用守护进程【后台运行】
- requirepass: 密码设置
开通 对外端口
firewall-cmd --zone=public --add-port=6379/tcp --permanent ## 开放6379端口
systemctl restart firewalld ## 重启防火墙以使配置即时生效
##看系统所有开放的端口
firewall-cmd --zone=public --list-ports
| 配置项名称 | 配置项值范围 | 说明 |
|---|---|---|
| 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 | 指定本地数据库文件名,默认值为 dump.rdb |
| dir | 指定本地数据库存放目录 | |
| requirepass | 设置 Redis 连接密码,如果配置了连接密码,客户端在连接 Redis 时需要通过 AUTH <password> 命令提供密码,默认关闭 | |
| maxclients | 0 | 设置同一时间最大客户端连接数,默认无限制,Redis 可以同时打开的客户端连接数为 Redis 进程可以打开的最大文件描述符数,如果设置 maxclients 0,表示不作限制。当客户端连接数到达限制时,Redis 会关闭新的连接并向客户端返回 max number of clients reached 错误信息。 |
| maxmemory | XXX <bytes> | 指定 Redis 最大内存限制,Redis 在启动时会把数据加载到内存中,达到最大内存后,Redis 会先尝试清除已到期或即将到期的 Key,当此方法处理 后,仍然到达最大内存设置,将无法再进行写入操作,但仍然可以进行读取操作。Redis 新的 vm 机制,会把 Key 存放内存,Value 会存放在 swap 区。配置项值范围列里XXX为数值。 |
这里我要将daemonize改为yes,不然我每次启动都得在redis-server命令后面加符号&,不这样操作则只要回到Linux控制台则redis服务会自动关闭,同时也将bind注释,将protected-mode设置为no。 这样启动后我就可以在外网访问了。
更改方式:
vim /usr/local/redis/redis.conf
通过 /daemonize 查找到属性,默认是no,更改为yes即可。 (通过/关键字查找出现多个结果则使用 n字符切换到下一个即可,查找到结果后输入:noh退回到正常模式)
如下图:

8. 卸载redis:
which redis-server # 查找位置 如果不行 find / -name redis-server
rm -rf /usr/local/redis # 删除安装目录
rm -rf /usr/local/bin/redis-* #删除所有redis相关命令脚本
rm -rf /root/download/redis-4.0.4 #删除redis解压文件夹
Redis 报错 及处理
未安装gcc环境
安装redis时 提示执行make命令时提示 CC adlist.o /bin/sh: cc: 未找到命令
安装redis时 提示执行make命令时提示 CC adlist.o /bin/sh: cc: 未找到命令
问题原因:这是由于系统没有安装gcc环境,因此在进行编译时才会出现上面提示,当安装好gcc后再进行编译时,上面错误提示将消失。
解决方法:
安装gcc
[ckl@localhost ~]$ yum -y install gcc automake autoconf libtool make
安装c编译器并编译
[root@bogon redis-3.2.0]# make
cd src && make all
make[1]: 进入目录“/usr/local/redis-3.2.0/src”
CC adlist.o
/bin/sh: cc: 未找到命令
make[1]: *** [adlist.o] 错误 127
make[1]: 离开目录“/usr/local/redis-3.2.0/src”
make: *** [all] 错误 2
安装c编译器并编译
[root@bogon redis-3.2.0]# yum install gcc-c++
[root@bogon redis-3.2.0]# make
cd src && make all
make[1]: 进入目录“/usr/local/redis-3.2.0/src”
CC adlist.o
In file included from adlist.c:34:0:
zmalloc.h:50:31: 致命错误:jemalloc/jemalloc.h:没有那个文件或目录
#include <jemalloc/jemalloc.h> ^
编译中断。
make[1]: *** [adlist.o] 错误 1
make[1]: 离开目录“/usr/local/redis-3.2.0/src”
make: *** [all] 错误 2
解决“jemalloc/jemalloc.h:没有那个文件或目录“问题,在进行编译(因为上次编译失败,有残留的文件)
[root@bogon redis-3.2.0]# make distclean
[root@bogon redis-3.2.0]# make && make install
server.c:5171:176: 错误:‘struct redisServer’没有名为‘maxmemory’的成员
1、安装gcc套装:
yum install cpp binutils glibc glibc-kernheaders glibc-common glibc-devel gcc make
yum install binutils --
yum install glibc --
yum install glibc-kernheaders
yum install glibc-common
yum install glibc-devel
yum install gcc
yum install make
2、升级gcc
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
3、设置永久升级:
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile
4、安装redis: