学习redis一段时间了,现在开始使用springboot整合redis,实现Java与redis数据库的连接与一系列的使用。
但刚开始就给我来了个下马威,直接寄,连接不上redis,在swagger的报错如下:
Unable to connect to Redis; nested exception is org.springframework.data.redis.connection.PoolException: Could not get a resource from the pool; nested exception is io.lettuce.core.RedisConnectionException: Unable to connect to localhost:6379\r\n\tat
我连夜写邮件给阳哥(bushi
阳哥人很好,很快就给回信儿了:
经过排查,定位到了错误点:主机与虚拟机不互通
但是很奇怪,虚拟机能ping通主机,但是主机ping不通虚拟机。。。
我十分疑惑也很震惊(无知给人带来的惊愕
于是开始苦苦搜寻解决之道,原来是虚拟机的网络配置问题
一般虚拟机都会提供了三种网络工作模式,分别是:
Bridged(桥接模式):实现虚拟机在真实的网络上;
NAT(网络地址转换模式):实现虚拟机隐藏在物理机之后,能上网,但不能访问物理机;
Host-Only(仅主机模式):实现虚拟机隐藏在物理机之后,不能上网,但可以访问物理机;
这三种模式的具体区别参考:https://zhuanlan.zhihu.com/p/403513377
我的虚拟机一开始是NAT模式,这就印证了为什么我的主机不能ping虚拟机但是虚拟机能ping通主机
所以,如要是主机和虚拟机要互通,需要把虚拟机转换为桥接模式,操作过程如下(virtualbox):
界面名称:读取本机网络连接中的网卡信息,当前本机连接的什么网络就选择哪张网卡。
然后启动虚拟机,关闭防火墙:
查看防火墙状态:firewall-cmd --state 关闭防火墙:systemctl stop firewalld 开启防火墙:systemctl start firewalld
打开网卡配置文件,注意要先进入root模式(su)
cd /etc/sysconfig/network-scripts/ vi ifcfg-enp0s3
修改配置文件:
BOOTPROTO=static ONBOOT=yes IPADDR=(设置与主机ip同网段的地址) GATEWAY=(设置与主机网络相同的网关)
然后重启网络,跟着网上的教程走service network restart
,报错了。。。
再次网上冲浪寻找答案后发现
原因是由于 centos8 已经替换了原来的network, 新版的叫:NetworkManager
所以用这个命令就可以重启了 systemctl restart NetworkManager
这个命令成功后,我以为完事了,但是我再ifconfig查看网关配置发现ip根本没有改变。。。
这个时候我心如死灰,以为前面的都是白做了,不过是徒劳。。。
想把全部东西都X掉,然后去睡一觉,但是又不甘心。。。
瞎聊一下:有个名词叫沉没成本,我也是不久前了解的,大概意思就是,你投入的成本已经无法取回了,你就会舍不得放弃,你会近乎痴迷地想要继续下去,
但是,你知道的,你不能因为投了两元币就不下车,当然这只是一个比喻,你的投入何止是两元币,但是这个世界上我们无能为力的事情太多了,
仅凭一人的努力能做到的事情也太有限了。。。所以,该放就得放,学会断舍离。
好吧,这个东西和我今天要做的没啥关系(狗头
但是我就是想把它搞好,把redis连接上,于是我去请教了老师,老师一针见血
sudo ifdown enp0s3 sudo ifup enp0s3
终于!!!ip改成功了!!!
我还是有点忐忑,万一改好了还是连不上咋办,我马上主机和虚拟机互ping,ok,通了!
我赶紧运行springboot,又被泼一身冷水。。。连接失败。。。
这时候真有点绷不住了,但是!!!仔细一看报错信息:
原来忘记改ip了!刚刚在虚拟机改了ip,springboot项目也要把ip改过来
修改配置文件:
启动redis服务器:
然后再启动springboot项目,成功!!!
启动redis客户端查询后,能看到数据也成功写入!
okay,终于是连上了,学习redis的“里程碑式”的成功!哈哈哈哈
一波三折,留下这篇,记录点滴,启示他人。