阿西吧,自己太菜了,用SpringBoot调用Redis缓存的时候,出了各种问题,记录一下,大家别学我

本文有自己的经验,也有从其他博客整理来的零零散散的经验。

1、安装Redis

安装redis,一般有很多方法,比如yun安装,npm安装,直接压缩包安装,docker运行等等等等

先说yum里面的

yum安装比较简单

首先安装epel源

yum install -y epel-release

然后安装redis

yum install -y redis

设置成开机自启动

chkconfig redis on

卸载redis

yum remove redis

yum安装的配置文件的位置

配置文件在/etc/redis.conf

服务器和客户端在 /usr/bin/redis-server redis-cli

whereis redis 可以查看配置文件在哪

docker安装

docker会用的话,应该很清晰,

docker search redis

docker pull 镜像名

docker images 查看镜像

docker 默认没有配置文件,所以,默认使用问题很大

docekr 自定义配置文件启动 https://www.jianshu.com/p/ff599cddc869

压缩包安装

来自菜鸟

**下载地址:**http://redis.io/download,下载最新稳定版本。

$ wget http://download.redis.io/releases/redis-2.8.17.tar.gz
$ tar xzf redis-2.8.17.tar.gz
$ cd redis-2.8.17
$ make

make完后 redis-2.8.17目录下会出现编译后的redis服务程序redis-server,还有用于测试的客户端程序redis-cli,两个程序位于安装目录 src 目录下:

下面启动redis服务.

$ cd src
$ ./redis-server

注意这种方式启动redis 使用的是默认配置。也可以通过启动参数告诉redis使用指定配置文件使用下面命令启动。

$ cd src
$ ./redis-server ../redis.conf

redis.conf 是一个默认的配置文件。我们可以根据需要使用自己的配置文件。

默认使用的是redis目录下的redis.conf文件,可以直接修改这个文件,也可以新建一个文件(这样比较保险)

2、redis配置文件

这里先不说高级配置

下面给了个中文翻译的配置文件(看不懂英文了可以看这个)

redis配置文件详解https://www.jianshu.com/p/41f393f594e8

就最简单的,让你的本地程序能访问远程服务器上的redis

错误:无法链接redis,默认情况下,外网是没办法访问redis的,需要修改配置

找到redis的配置文件 redis.conf

修改 protected-mode yes 改为:protected-mode no
注释掉 #bin 127.0.0.1

另外redis.conf中设置了密码也会出现这种情况,注释掉 #requirepass 这行

设置密码两种办法:

原文https://www.cnblogs.com/tenny-peng/p/11543440.html

需要使用./redis-cli进入redis,

客户端使用config get requirepass命令查看密码

>config get requirepass
1)"requirepass"
2)"" //默认空

客户端使用config set requirepass yourpassword命令设置密码

>config set requirepass 123456
>OK

一旦设置密码,必须先验证通过密码,否则所有操作不可用

>config get requirepass
(error)NOAUTH Authentication required

使用auth password验证密码

>auth 123456
>OK
>config get requirepass
1)"requirepass"
2)"123456"

另外一种办法

  1. 配置文件设置密码

在redis根目录下找到redis.windows.conf配置文件,搜索requirepass,找到注释密码行,添加密码如下:

# requirepass foobared
requirepass tenny //注意,行前不能有空格

重启服务后,客户端重新登录后发现

>config get requirepass
1)"requirepass"
2)""

密码还是空?

网上查询后的办法:创建redis-server.exe 的快捷方式, 右键快捷方式属性,在目标后面增加redis.windows.conf, 这里就是关键,你虽然修改了.conf文件,但是exe却没有使用这个conf,所以我们需要手动指定一下exe按照修改后的conf运行,就OK了。

所以,这里我再一次重启redis服务(指定配置文件)

>redis-server.exe redis.windows.conf

客户端再重新登录,OK了。

>redis-cli.exe -h 127.0.0.1 -p 6379 -a 123456
>config get requirepass
1)"requirepass"
2)"123456"

3、SpringBoot与Redis的坑

SpringBoot除去注解式的缓存外,还可以使用RedisTemplate来访问

注意RedisTemplate是RedisAutoConfiguration中,在系统启动时注入在系统中的Bean,所以我们使用需要引入

然后使用RedisTemplate获取ValueOperations类,用此进行操作。

 @Autowired
StringRedisTemplate stringRedisTemplate;
@Test
void redisTest(){
ValueOperations valueOperations=stringRedisTemplate.opsForValue();
valueOperations.set("456","465"); System.out.println(valueOperations.get("123"));
}

java.lang.NoClassDefFoundError: org/apache/commons/pool/impl/GenericObjectPool

这个看报错信息你应该知道是缺少了类,认真看一下是缺少了一个依赖(想不到吧,只是redis的依赖还不够)

引入依赖

		<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
</dependency>

有用了求个赞,谢谢hxd

Redis新手的坑,无法连接、缺少类、没有密码的更多相关文章

  1. python redis模块的常见的几个类 Redis 、StricRedis和ConnectionPool

    日常写代码过程中,经常需要连接redis进行操作.下面我就介绍下python操作redis模块redis中的几个常见类,包括redis连接池. 一.StrictRedis 类 请看代码:. #!/us ...

  2. springBoot集成Redis遇到的坑(择库)源码分析为什么择库失败

    提示: springboot提供了一套链接redis的api,也就是个jar包,用到的连接类叫做LettuceConnectionConfiguration,所以我们引入pom时是这样的 <de ...

  3. 在centos使用redis几个坑

    问题来源 最近公司的平台需要做一些分布式的规划,其中会话我们打算用redis来存储,因为之前也有了解过redis,但都是在windows上使用,为了发挥redis的优势,这次我们打算直接在Linux上 ...

  4. Redis02 Redis客户端之Java、连接远程Redis服务器失败

    1 查看支持Java的redis客户端 本博文采用 Jedis 作为redis客户端,采用 commons-pool2 作为连接redis服务器的连接池 2 下载相关依赖与实战 2.1 到 Repos ...

  5. Redis适配采坑记

    Redis适配采坑记 相对于其他的适配,Redis可以说是非常简单的其中只发现一个坑 问题一: 问题描述: redis认证失败 问题详解: redis连接配置时,本地需要采用password属性,远程 ...

  6. JDBC连接工厂类

       看到有些书上数据库连接提供两个工厂类,一个连接工厂类一个关闭工厂类,并且关闭工厂类写了多种重载形式,感觉没有必要,这样写比较简洁一些. /** * 抽象出的连接工厂类,提供连接数据库和关闭连接的 ...

  7. 那些年踩过的坑之:first-child伪类选择器

    原文:那些年踩过的坑之:first-child伪类选择器 :first-child 选择器用于选取属于其父元素的首个子元素的指定选择器.——w3school 嗯,乍一看好像说的不是很明白,因此这个选择 ...

  8. Redis随笔(二)redis desktop manager 安装并且连接redis服务器

    1.首先在win10下安装redis desktop manager 2.查看虚拟机防火墙状态,启动状态,则关闭掉 查看防火墙状态: systemctl status firewalld.servic ...

  9. 分布式改造剧集之Redis缓存采坑记

    Redis缓存采坑记 ​ 前言 ​ 这个其实应该属于分布式改造剧集中的一集(第一集见前面博客:http://www.cnblogs.com/Kidezyq/p/8748961.html),本来按照顺序 ...

随机推荐

  1. asp.net mvc core 管道以及拦截器初了解

    今天来看一下asp.net core的执行管道.先看下官方说明: 从上图可以抛光,asp.net core的执行顺序是,当收到一个请求后,request请求会先经过已注册的中间件,然后会进入到mvc的 ...

  2. SpiningUP 强化学习 中文文档

    2020 OpenAI 全面拥抱PyTorch,  全新版强化学习教程已发布. 全网第一个中文译本新鲜出炉:http://studyai.com/course/detail/ba8e572a 个人认为 ...

  3. Spark RDD Tutorial

    Spark RDD教程 这个教程将会帮助你理解和使用Apache Spark RDD.所有的在这个教程中使用的RDD例子将会提供在github上,供大家快速的浏览. 什么是RDD(Rssilient ...

  4. 深入学习用 Go 编写 HTTP 服务器

    Go是一门通用的编程语言,想要学习 Go 语言的 Web 开发,就必须知道如何用 Go 启动一个 HTTP 服务器用于接收和响应来自客户端的 HTTP 请求.用 Go实现一个http server非常 ...

  5. 从火箭发场景来学习Java多线程并发闭锁对象

    从火箭发场景来学习Java多线程并发闭锁对象 倒计时器场景 在我们开发过程中,有时候会使用到倒计时计数器.最简单的是:int size = 5; 执行后,size—这种方式来实现.但是在多线程并发的情 ...

  6. webpack,Babel,babel-loader的关系

    本文将要介绍 webpack,Babel,babel-loader 的关系.理清楚他们各自做了什么事情. 通常我们新建一个项目,会先配置webpack,然后配置babel:babel是一个编译工具,实 ...

  7. IDEA启动项目报错:Cannot open URL.Please check this URL is correct

    IDEA启动项目报错:Cannot open URL.Please check this URL is correct 问题:IDEA启动SSM项目,使用的Tomcat,报错 Cannot open ...

  8. Python第二周作业

    绘制五角星 import turtle turtle.color('black','red') turtle.pensize(10) turtle.begin_fill() for i in rang ...

  9. Vulnhub 靶场 Os-hackNos WP

    About Os-hackNos 描述 Difficulty : Easy to Intermediate Flag : 2 Flag first user And second root Learn ...

  10. 【面试必备】用了那么多次 ping,是时候知道 ping 是如何工作的了!

    每日一句英语学习,每天进步一点点: 前言 在日常生活或工作中,我们在判断与对方网络是否畅通,使用的最多的莫过于 ping 命令了. “那你知道 ping 是如何工作的吗?” —— 来自小林的灵魂拷问 ...