前言
今天安装了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 找不到问题了,上网搜
找到的答案:
-
spring.redis.timeout连接超时时间(毫秒)中设置不能为0,
一般修改如下:spring.redis.timeout=5000。pass - 找到redis的配置文件 redis.conf : 执行 vim redis.conf
3.1 protected-mode yes 改为 protected-mode no (即该配置项表示是否开启保护模式,默认是开启,开启后Redis只会本地进行访问,拒绝外部访问)。pass - 注释掉 bin127.0.0.1 即 #bin 127.0.0.1 (ps: 不注释掉,表示指定 redis 只接收来自于该 IP 地址的请求,注释掉后,则表示将处理所有请求)。pass
-
如果在Redis中没有配置requirepass ,那么在application.properties(或application.yaml)中就不要写spring.redis.password。pass
是的,我今天才按照redis,自然没配密码,我一开始也把idea中的配置文件password删除了
可惜还是不行,后面听到阿里云主机容易被挖矿的拿去充当算力就去配了一下密码,结果居然行了
,真的是莫名其妙啊