Redis 可以说是现代最重要的内存类型的键值存储系统了,虽然是单进程,但是其灵活性,高性能和广泛的语言系统支持,受到广大程序员的喜爱,几乎已经成为现在软件的基础。
尽管在 Linux 上默认安装就行,在 Ubuntu Linux 上 用 apt install redis-server 即可安装完成,但是这样安装不安全,特别是在生产服务器上,会让系统和服务器面临着攻击的风险,没有加固的 Redis 还有可能导致数据的泄漏,未授权的放到,甚至服务器的权限被攻破。
下面的内容讲帮你安装 Redis,并避免以上这些问题
要学习这个教程,你最好用一台 Ubuntu Linux 服务器,不管是云服务器还是虚拟机里面搞一台,都可以的,一般安装好,都有一个sudo 权限的非 root 账户,并且打开 ufw。
我们使用 apt 命令来安装,首选来更新系统的缓存包
然后安装 Redis
●●●CODE
sudo apt install redis-server
在系统安装成功完成安装 Redis 之后,我们通过如下命令查看 Redis 的版本
●●●CODE
redis-server --version
Redis 有一个配置文件,通过这个配置文件,可以修改不少东西,修改配置的文件的命令sudo vim /etc/redis/redis.conf,找到supervised no 的部分,改成 supervised systemd,如果已经是了,就不用改了。
因为我们的 Ubuntu 是 systemd 管理系统服务的,改动之后,就可以通过 systemd 命令管理redis 了
最好执行命令
●●●CODE
sudo systemctl restart redis.service
现在我们第一步的工作就完成了
在测试 Redis 之前,我们先检查一下 Redis的状态
●●●CODE
sudo systemctl status redis
如果是正常的话,应该是下面这个信息
●●●CODE
● redis-server.service - Advanced key-value store Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled) Active: active (running) since Thu 2026-08-16 23:26:54 UTC; 4s ago Docs: http://redis.io/documentation, man:redis-server(1) Process: 36552 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS) Main PID: 36561 (redis-server) Tasks: 4 (limit: 2345) Memory: 1.8M CGroup: /system.slice/redis-server.service └─36561 /usr/bin/redis-server 127.0.0.1:6379. . .
如果是其它信息,留言交流
我们使用下面命令测试连接 redis server 是否正常
回车之后,系统应该进入命令行界面
●●●CODE
127.0.0.1:6379> ping
回应
恭喜你,连接redis 非常正常
我们再试一个键值命令
●●●CODE
set test "It's working!"
说明设置 test 健成功
我们再试试
说明 redis 功能一切正常
我们现在退出 redis
我们现在重启 redis
●●●CODE
sudo systemctl restart redis
再次执行上面命令
●●●CODE
redis-cliget test"It's working!"
现在看来,安装的redis 功能完全正常
虽然功能没有了问题,但是部分配置还有安全问题,我们接下来一一解决
如果你安装本教程,那么redis 会绑定到redis 上,如果安装其它教程,有可能绑定到其它地址上,产生安全问题,那么如何修改呢?
●●●CODE
sudo vim /etc/redis/redis.conf
找到如下部分修改
●●●CODE
bind 127.0.0.1 ::1
修改完成后,执行命令
●●●CODE
sudo systemctl restart redis
我们通过如下命令检测一下修改
●●●CODE
sudo netstat -lnp | grep redis
如果是类似如下的信息,那么就修改成功了
●●●CODE
tcp 0 0 127.0.0.1:6379 0.0.0.0:* LISTEN 14222/redis-server tcp6 0 0 ::1:6379 :::* LISTEN 14222/redis-server
从 Redis 6 开始,访问控制列表(ACL) 成为管理用户访问权限的首选方式,ACL 允许你定义多个用户,为不同的用户设置不同的密码和权限,我们看看怎么操作
我们先用 openssl 生成一个随机密码
●●●CODE
openssl rand 60 | openssl base64 -A
把结果保存起来
执行命令
●●●CODE
sudo vim/etc/redis/redis.conf
找到如下这段内容
●●●CODE
# Disable the default user.user default off# Create a new user with a strong password and full permissions.user myuser on >your_generated_password ~* &* +@all
解释一下:myuser:用户名。on:启用该用户。your_generated_password:设置用户的密码。~ & +@all**:一条规则,允许用户在所有的键空间(~)和所有的发布/订阅频道(&)上运行所有命令(+@all)。
修改完成后
●●●CODE
sudo systemctl restart redis.service
如果这时候你再用 redis-cli ping 就会收到 NOAUTH Authentication required.
那么怎么样用redis 命令呢?
●●●CODE
redis-cli --user myuser --askpass
这样就把redis 用户和其它用户隔离起来了,用户之前就不受影响了
●●●CODE
sudo ufw allow from your_trusted_ip/32 to any port 6379 proto tcp
这样就可以让指定的 IP 访问 redis了
如果不行,再加一个命令查看一下
●●●CODE
sudo ufw allow OpenSSH
如果需要更高级别的安全,可以配置 mTLS,这时候,客户端必须向服务器发送有效证书
首选,我们生成一个由 CA 签发的客户端 Key 和 证书
●●●CODE
# Generate client key and CSRopenssl genrsa -out client.key 2048openssl req -new -key client.key -out client.csr# Sign the client certificate with your CAsudo openssl x509 -req -in client.csr -CA /etc/redis/tls/ca.crt -CAkey /etc/redis/tls/ca.key -CAcreateserial -out client.crt -days 365 -sha256
修改 /etc/redis/redis.conf 文件
●●●CODE
tls-auth-clients yes
重启 Redis Server,现在我们连接 redis 就需要证书了
●●●CODE
redis-cli --user myuser --askpass --tls \ --cacert /etc/redis/tls/ca.crt \ --cert client.crt \ --key client.key
Redis 安全安装就是这些了,如果还有什么疑问,评论区留言