Springboot测试redis出现的bug

前言

今天安装了redis,然后用Springboot测试时出现了bug,即使按照网上的办法也无济于事,最后自己听说阿里云6379端口容易被攻击就设置了一下密码,结果就连接成功了,解除了bug,真的是莫名其妙,特此记录。

Linux安装redis

这个网上有很多教程,大同小异。我这里就班门弄斧一下下

1 升级gcc

注意:redis6版本要求gcc版本必须5.3以上,centos7默认安装的版本是4.8.5,查看gcc版本命令

查看gcc gcc -v

//升级
yum -y install centos-release-scl
yum -y install devtoolset-9-gcc devtoolset-9-gcc-c++ devtoolset-9-binutils
scl enable devtoolset-9 bash
echo "source /opt/rh/devtoolset-9/enable" >>/etc/profile  --使永久生效

yum install tcl -y

2 上传压缩包,并解压

可以自己去官网下载,然后利用xftp上传到云主机,也可以找到地址用wegt下载

tar -zxvf redis-6.0.8.tar.gz

3 编译,安装

在解压之后的redis目录下进行编译 make

安装 make PREFIX=/export/server/redis install

prefix是路径 指把redis安装到那个路径下,没有先创路径: mkdir 目录

4 配置环境变量

redis有前台运行,后台运行 前台运行直接在redis下的bin目录下运行 ./redis-server

不确定目录下有没有文件可以用ls查看,不过一般不推荐,不过可以验证redis有没有验证成功

#随便哪个地方输入语法都行,都能进去,跳到最后修改,有jdk配置可以不修过,
#redis——home要对应自己安装的路径,跟配置jdk环境变量一样
vim /etc/profile

export JAVA_HOME=/export/server/jdk1.8
REDIS_HOME=/export/server/redis
export PATH=$PATH:$JAVA_HOME/bin:$REDIS_HOME/bin

立即生效
source /etc/profile

配置完环境变量后,我们可以在任何目录下启动redis-server
#这里的conf是在下面哪个目录下的
./redis-server  /export/server/redis/bin/redis.conf 

到这里就差不多搞定了,可能小白不太看的懂,因为我一些命令都没写,不过你们可以对着我的参考别人的图,他们写得那么多,但是基本流程是这样的

Spring测试

导入依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.apache.commons/commons-pool2 -->
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.8.0</version>
        </dependency>

 这里的密码我是后面配置的,一开始没有配置

端口号是自己的云主机

package com.qf;

import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.BoundValueOperations;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;

/**
 * @author: 玉米
 * @description
 * @date: 2022/3/24 17:22
 */
@SpringBootTest
@RunWith(SpringJUnit4ClassRunner.class)
public class RedisTest {
    @Autowired
    private StringRedisTemplate redisTemplate;
    @Test
    public void testRedis(){
        BoundValueOperations<String, String> name = redisTemplate.boundValueOps("name");
        name.set("zhangsan");
        System.out.println(name.get());

    }









}

一个简单的测试代码

结果测试说不能连接到redis

那么就找问题

1 主机IP是不是对的

都是云主机地址,不是这里的问题

2 云主机有没有开放端口

已开放,安全组已经放行

3 找不到问题了,上网搜

找到的答案:

  1. spring.redis.timeout连接超时时间(毫秒)中设置不能为0,
    一般修改如下:spring.redis.timeout=5000。pass

  2. 找到redis的配置文件 redis.conf : 执行 vim redis.conf
    3.1 protected-mode yes 改为 protected-mode no (即该配置项表示是否开启保护模式,默认是开启,开启后Redis只会本地进行访问,拒绝外部访问)。pass
  3. 注释掉 bin127.0.0.1 即 #bin 127.0.0.1 (ps: 不注释掉,表示指定 redis 只接收来自于该 IP 地址的请求,注释掉后,则表示将处理所有请求)。pass
  4. 如果在Redis中没有配置requirepass ,那么在application.properties(或application.yaml)中就不要写spring.redis.password。pass

是的,我今天才按照redis,自然没配密码,我一开始也把idea中的配置文件password删除了

可惜还是不行,后面听到阿里云主机容易被挖矿的拿去充当算力就去配了一下密码,结果居然行了

,真的是莫名其妙啊

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值