1.前期准备
(1)先把redis安装配置好,可以看看我的这篇文章:
(2)最好把Finalshell也下载好,具体下载教程详见如下文章:
保姆级教程下载finalshell以及连接云服务器基础的使用教程_finalshell下载安装-优快云博客
(3)确认一下报错:
这个报错Failed to connect to any host resolved for DNS name.的具体原因是
- redis关闭了远程连接,需要在redis.conf中修改
- 防火墙拦截了6379端口,需要放行端口
接下来就讲讲怎么解决报错
2.解决问题(这里操作全部在root用户下进行)
(1)首先修改 /export/server/prod/redis/etc/redis.conf 这个文件
vi /export/server/prod/redis/etc/redis.conf
进入文件后,点击esc键,输入/protected-mode
/protected-mode
然后会跳转到相应位置,先按 i 进入插入模式,再将protected-mode yes改为protected-mode no(关闭保护模式)
修改后效果如下
接着点击esc键,输入/bind 127.0.0.1
/bind 127.0.0.1
把这两个都注释掉,如果文件里本身没有注释的话,就都要加上注释
像这样把这两行注释掉
# bind 127.0.0.1 ::1 # listens on loopback IPv4 and IPv6
和
#bind 127.0.0.1 -::1
注释效果如下:
最后保存并且退出
(2)先启动redis服务,然后再输入以下命令,放行6379端口,并重启防火墙
redis-server /export/server/prod/redis/etc/redis.conf
firewall-cmd --zone=public --add-port=6379/tcp --permanent
systemctl restart firewalld
效果如下
[root@node1 ~]# redis-server /export/server/prod/redis/etc/redis.conf
[root@node1 ~]# firewall-cmd --zone=public --add-port=6379/tcp --permanent
Warning: ALREADY_ENABLED: 6379:tcp
success
[root@node1 ~]# systemctl restart firewalld
- 有关后两个命令的注释
- 第一个命令是添加一个永久的防火墙规则,允许通过 TCP 协议访问端口
6379
(通常是 Redis 的端口)。 - 第二个命令是重启防火墙服务,以使得新的规则生效。
(3)重启redis服务
redis-cli shutdown
redis-server /export/server/prod/redis/etc/redis.conf
[root@node1 ~]# redis-cli shutdown
[root@node1 ~]# redis-server /export/server/prod/redis/etc/redis.conf
(4)最后进入idea再次尝试连接数据库redis
记得选择无身份验证(如果没有给redis设置登录密码的话)
成功了!
写点代码试试看
运行set命令
运行get命令
好了,到了这里,所有问题基本上都被解决了!
3.参考文章:
(1)idea连接云服务器上的redis报错:Failed to connect to any host resolved for DNS name.【已解决】-优快云博客
(3)Linux下安装Redis,及部分配置详情_linux下载redis-优快云博客
(4)在linux虚拟机上面配置Docker时所踩过的坑_docker 20.10.6设置镜像源不生效-优快云博客
4.补充笔记
(1)有关这两个命令的完整解释
好的,以下是经过美化后的版本:
---
这两个命令的作用是配置防火墙规则,允许特定端口的网络流量,并确保这些规则在防火墙重启后依然生效。
### 1. `firewall-cmd --zone=public --add-port=6379/tcp --permanent`
- **`firewall-cmd`**:用于管理 `firewalld` 防火墙的命令行工具。
- **`--zone=public`**:指定操作的防火墙区域。`public` 是常见的默认区域,通常用于公共网络。
- **`--add-port=6379/tcp`**:允许通过 TCP 协议访问端口 `6379`,这是 Redis 服务的默认端口。
- **`--permanent`**:将此规则设置为永久生效,即使系统重启后,规则仍然保持有效。
### 2. `systemctl restart firewalld`
- **`systemctl`**:用于管理系统服务的工具。
- **`restart firewalld`**:重启 `firewalld` 防火墙服务,使防火墙立即应用新的配置规则。
### 总结:
- 第一个命令添加了一条防火墙规则,允许 TCP 流量访问端口 `6379`,通常是为了允许外部访问 Redis 数据库。
- 第二个命令则重启了防火墙服务,确保新的规则立即生效。
通过这两个命令,你可以轻松配置防火墙以允许外部设备或应用连接到 Redis 服务。
---
希望这版内容能帮助你更清晰地理解和使用!如果还有问题,随时告诉我!
(2)这个grep --color=auto redis是什么进程?
简而言之,`14872` 是 `grep` 命令的进程号,而不是 Redis 服务的进程。
从你提供的 `ps -ef | grep redis` 输出中,可以看到两个相关的进程:
```
root 13096 1 0 17:54 ? 00:00:00 redis-server 127.0.0.1:6379
root 14872 10945 0 17:56 pts/0 00:00:00 grep --color=auto redis
```
其中,`redis-server` 进程的进程号(PID)是 `13096`。
所以,`redis` 的进程号是 **13096**。
进程号 `14872` 对应的是你执行的 `grep --color=auto redis` 命令的进程。
在你执行 `ps -ef | grep redis` 时,`grep` 命令本身也会出现在输出结果中,因为它的命令行参数中包含了 `redis` 字符串。所以,`14872` 是 `grep redis` 命令的进程号。`grep` 会在 `ps` 命令的输出中搜索 `redis`,因此它自己也会被包含在结果中。