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

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

1、安装Redis

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

先说yum里面的

yum安装比较简单

首先安装epel源

  1. yum install -y epel-release

然后安装redis

  1. yum install -y redis

设置成开机自启动

  1. chkconfig redis on

卸载redis

  1. 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,下载最新稳定版本。

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

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

下面启动redis服务.

  1. $ cd src
  2. $ ./redis-server

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

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

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

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

2、redis配置文件

这里先不说高级配置

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

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

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

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

找到redis的配置文件 redis.conf

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

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

设置密码两种办法:

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

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

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

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

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

  1. >config set requirepass 123456
  2. >OK

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

  1. >config get requirepass
  2. (error)NOAUTH Authentication required

使用auth password验证密码

  1. >auth 123456
  2. >OK
  3. >config get requirepass
  4. 1)"requirepass"
  5. 2)"123456"

另外一种办法

  1. 配置文件设置密码

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

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

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

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

密码还是空?

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

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

  1. >redis-server.exe redis.windows.conf

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

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

3、SpringBoot与Redis的坑

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

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

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

  1. @Autowired
  2. StringRedisTemplate stringRedisTemplate;
  3. @Test
  4. void redisTest(){
  5. ValueOperations valueOperations=stringRedisTemplate.opsForValue();
  6. valueOperations.set("456","465");
  7. System.out.println(valueOperations.get("123"));
  8. }

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

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

引入依赖

  1. <dependency>
  2. <groupId>org.springframework.boot</groupId>
  3. <artifactId>spring-boot-starter-data-redis</artifactId>
  4. </dependency>
  5. <dependency>
  6. <groupId>org.apache.commons</groupId>
  7. <artifactId>commons-pool2</artifactId>
  8. </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. 第一个Hystrix程序 Hystrix 一

    1.导入jar包 <dependencies> <dependency> <groupId>com.netflix.hystrix</groupId> ...

  2. RAC修改VIP地址

    目录 当前环境 1.通过[srvctl config]确认当前VIP地址. 2.关闭dbconsole[对应的em] 3.关闭数据库实例 4.关闭asm实例 5.关闭结点服务 6.修改两个节点的/et ...

  3. flask修改flask_wtf使其支持json数据的validation验证

    flask默认是前后端不分离策略,前端通过flask+wtf表单来传递post,put...等数据. 现在前后端分离是趋势,那么对flask进行一定的修改,变为前后端分离,在前端页面中请求后端,那么请 ...

  4. HTML5 history-hash 随机选择彩票

    <!doctype html> <html> <head> <meta charset="utf-8"> <title> ...

  5. windows 下载~安装nginx

    nginx 中文文档 http://www.nginx.cn/doc/ 到nginx官网下载安装包http://nginx.org/en/download.html 解压安装包 进入windows的c ...

  6. Ubuntu下搭建.Net Core环境并发布MVC项目

    支撑环境 1. Windows 10 1809 12月更新版本(其他版本应该也行,但建议不低于1809,过低的版本可能无法安装子系统ubuntu18.04 LTS) 2. ubuntu 18.04 L ...

  7. 在Centos系统中基于PowerDNS和Poweradmin自建域名解析服务器替代DnsPod

    本文讲述了我在Centos 7系统(其他版本的Centos未尝试)中基于PowerDNS和poweradmin自建域名解析服务器替代DnsPod的过程.通过本文所述方法,可以建立权威域名解析服务器的m ...

  8. Mysql优化大分页查询

    如题,年前做了一个需求,涉及到Mysql大分页查询,整理一下,希望对需要的小伙伴有帮助. 背景分页查询的性能瓶颈B+树简述B+比起二叉查找树,有什么优势?分页查询过程测试集解决方法1 延迟关联法:2 ...

  9. Linux 应用领域

    与Windows操作系统软件一样,Linux也是一个操作系统软件.但与Windows不同的是,Linux是一套开放源代码程序的,并可以自由传播的类UNIX操作系统软件,随着信息技术的更新变化,Linu ...

  10. [Linux][C][gcc] Linux GCC 编译链接 报错ex: ./libxxx.so: undefined reference to `shm_open'

    本人原创文章,文章是在此代码github/note的基础上进行补充,转载请注明出处:https://github.com/dramalife/note. 以librt丶用户自定义动态库libxxx 和 ...