摘要:如何通过springboot来集成操作Redis。

本文分享自华为云社区《SpringBoot连接Redis操作教程》,作者: 灰小猿。

今天来和大家分享一个如何通过springboot来集成操作Redis。

一、SpringBoot连接Redis

springboot连接Redis时需要在pom文件中导入所需的jar包依赖,依赖如下:

  <!-- 加入jedis依赖 -->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency>

(1)使用Jedis类直接连接Redis服务器

在springboot环境下连接redis的方法有很多,首先最简单的就是直接通过jedis类来连接,

jedis类就相当于是redis的客户端表示。

连接方法如下:

 /**
* redis连接测试01
*/
@Test
public void redisTest01() {
//连接本地的 Redis 服务
Jedis jedis = new Jedis("localhost");
// 如果 Redis 服务设置了密码,需要用下面这行代码输入密码
// jedis.auth("123456");
System.out.println("连接成功");
//查看服务是否运行
System.out.println("服务正在运行: "+jedis.ping());
}

运行后结果:

通过这种方式进行连接时,springboot会自动的去本地寻找redis服务器进行连接,如果没有找到那么就会报错,

如果你去阅读jedis的底层源码,你会发现Jedis类有多种构造方法,
常用的几个是

使用默认地址和端口

//不传值,那么使用默认的127.0.0.1地址,6379端口就访问
public Jedis()

使用指定地址和默认端口

//只传入目的地址,那么使用指定的地址和默认的端口号去访问
public Jedis(String host)

使用指定地址和端口

//传入目的地址和端口号,那么使用指定的地址和端口号去访问
public Jedis(String host, int port)

(2)通过配置文件进行连接

在springboot中,当然是可以通过配置文件的形式来设置各种连接参数了,Redis也是一样的,

在yml文件中进行如下配置:

注意:这是没有使用连接池的,如果使用连接池,需要在下边增加配置,关于使用连接池的可以继续往下看。

##redis配置信息
spring:
redis:
database: 0 #redis数据库索引,默认为0
host: 127.0.0.1 #redis服务器地址
port: 6379 #redis服务器连接端口
password: #redis服务器连接密码,默认为null
timeout: 5000 #redis连接超时时间

通过配置文件来进行配置之后,我们就可以使用springboot中的一个工具类来操作Redis的操作了,springboot会自动读取配置文件中的配置信息,然后通过该配置信息去连接Redis服务器,springboot中提供操作Redis的工具类有两个,分别是:StringRedisTemplate和RedisTemplate,

StringRedisTemplate和RedisTemplate的区别如下

  • 在进行序列化时,RedisTemplate使用的是 JdkSerializationRedisSerializer,而StringRedisTemplate使用的是StringRedisSerializer
  • StringRedisTemplate继承了RedisTemplate<String,String>,而RedisTemplate 定义为 RedisTemplate<K, V>,所有StringRedisTemplate就限定了K,V为String类型的

相同处体现在他们对Redis的操作上,

RedisTemplate和StringRedisSerializer都定义了五种对Redis的操作,分别对应这Redis中的五种数据类型。

redisTemplate.opsForValue();  //操作字符串
redisTemplate.opsForHash();   //操作hash
redisTemplate.opsForList();   //操作list
redisTemplate.opsForSet();   //操作set
redisTemplate.opsForZSet();   //操作有序set

那么在使用的时候,这两个类应该如何选择呢?

如果你的redis数据库里面本来存的是字符串数据,或者你要存取的数据就是字符串类型数据的时候,那么你就使用StringRedisTemplate即可,

》但是如果你的数据是复杂的对象类型,而取出的时候又不想做任何的数据转换,直接从Redis里面取出一个对象,那么使用RedisTemplate是更好的选择。

接下来我以StringRedisSerializer为例子,来给大家演示一下使用StringRedisSerializer操作Redis的方法,

   /**
* springboot主从连接测试,
* 使用springRedisTemplate操作
*/
@Test
public void redisTest06() {
// 操作字符型
stringRedisTemplate.opsForValue().set("test06","Test06");
System.out.println(stringRedisTemplate.opsForValue().get("test06")); // 设置key的过期时间,30秒
stringRedisTemplate.expire("test06", 30 * 1000, TimeUnit.MILLISECONDS); // 根据key获取过期时间
Long test06ExpireTime = stringRedisTemplate.getExpire("test06");
System.out.println("根据key获取过期时间:" + test06ExpireTime); // 根据key获取过期时间,并且换算成指定单位
Long test06ExpireTimeToUnit = stringRedisTemplate.getExpire("test06", TimeUnit.SECONDS);
System.out.println("根据key获取过期时间,并且换算成指定单位:" + test06ExpireTimeToUnit); // 检查key是否存在,返回布尔类型
Boolean test06IsExist = stringRedisTemplate.hasKey("test06");
System.out.println("检查key是否存在,返回布尔类型:" + test06IsExist); }

在上面的操作中,有一点关于获取和设置key过期时间的操作,当时在操作的时候对其进行了一下探究,在这里分享给大家

stringRedisTemplate中获取过期时间的getExpire()方法的说明

如果最开始没有设置过期时间,那么就返回-1,数据在没有达到Redis数据最大限额的情况下会一直存在.

如果设置了过期时间,但是数据还未过期,就返回剩余时间,如果到了过期时间,那么数据会被删除
如果数据被删除或者不存在,那么就返回-2.

点击关注,第一时间了解华为云新鲜技术~

不会用SpringBoot连接Redis,那就赶紧看这篇的更多相关文章

  1. springboot连接redis进行CRUD

    springboot连接redis进行CRUD: 1.添加以下依赖: <dependency> <groupId>org.springframework.boot</gr ...

  2. springboot连接redis错误 io.lettuce.core.RedisCommandTimeoutException:

    springboot连接redis报错 超时连接不上  可以从以下方面排查 1查看自己的配置文件信息,把超时时间不要设置0毫秒 设置5000毫秒 2redis服务长时间不连接就会休眠,也会连接不上 重 ...

  3. 转 Redis 总结精讲 看一篇成高手系统-4

    转 Redis 总结精讲 看一篇成高手系统-4 2018年05月31日 09:00:05 hjm4702192 阅读数:125633   本文围绕以下几点进行阐述 1.为什么使用redis 2.使用r ...

  4. java架构之路-(Redis专题)SpringBoot连接Redis超简单

    上次我们搭建了Redis的主从架构,哨兵架构以及我们的集群架构,但是我们一直还未投入到实战中去,这次我们用jedis和springboot两种方式来操作一下我们的redis 主从架构 如何配置我上次已 ...

  5. springboot 连接redis

    引入依赖: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>s ...

  6. SpringBoot连接Redis服务出现DENIED Redis is running in protected mode because protected mode is enabled

    修改redis.conf,yes 改为 no

  7. SpringBoot连接Redis (Sentinel模式&Cluster模式)

    一.引入pom <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...

  8. Redis 总结精讲 看一篇成高手系统-4

    本文围绕以下几点进行阐述 1.为什么使用redis2.使用redis有什么缺点3.单线程的redis为什么这么快4.redis的数据类型,以及每种数据类型的使用场景5.redis的过期策略以及内存淘汰 ...

  9. 【转】Redis 总结精讲 看一篇成高手系统-4

    https://www.cnblogs.com/rjzheng/p/9096228.html 本文围绕以下几点进行阐述 1.为什么使用redis2.使用redis有什么缺点3.单线程的redis为什么 ...

随机推荐

  1. Chapter 22 Target Trial Emulation

    目录 22.1 The target trial 22.2 Causal effects in randomized trails 22.3 Causal effects in observation ...

  2. Linux时间与日期

    date date:显示当前时间[年月日时分秒] date +%[选项] Y:年 m:月 d:日 H:时 M:分 S:秒 date "+%Y-%m-%d":格式化显示,格式可自定. ...

  3. 项目启动报错怎么办?看看你Spring自动注入用对了嘛?@Autowired XxxService注入问题解决

    问题 在Controller层使用 @Autowired注入Service时,提示Bean中没有Service 在Service接口中使用 @Component注入后,启动项目问题提示: The we ...

  4. Vue.js高效前端开发 • 【初识Vue.js】

    全部章节 >>>> 文章目录 一.Vue概述 1.Web前端框架介绍 2.MVC和MVVM 3.Vue介绍 4.安装Vue 二.Vue使用 1.第一个Vue应用 2.Vue的双 ...

  5. js 中&&的使用

    遇到下列代码goHome && (await router.replace(PageEnum.BASE_HOME)); &&这个逻辑与的作用是,当goHome为true ...

  6. win10 配置maven

    1.官网下载后,解压到需要的文件夹 2.进入文件夹,获取根目录的路径 3.配置环境变量 两个都要 M2_HOME MAVEN_HOME 3.配置path ,以相对路径的方式配置bin目录 4.测试是否 ...

  7. ubuntu 升级node和npm 版本

    使用vue-cli 3 构建项目时会一直卡在拉取依赖不动,原因是node和npm版本过低,升级node版本即可 $ sudo npm cache clean -f $ sudo npm install ...

  8. Python多线程、线程池及实际运用

    我们在写python爬虫的过程中,对于大量数据的抓取总是希望能获得更高的速度和效率,但由于网络请求的延迟.IO的限制,单线程的运行总是不能让人满意.因此有了多线程.异步协程等技术. 下面介绍一下pyt ...

  9. HW防守 | Linux应急响应基础

    最近也是拿到了启明星辰的暑期实习offer,虽然投的是安服,但主要工作是护网,昨天在公众号Timeline Sec上看到有一篇关于护网的文章,所以在这里照着人家写的在总结一下,为将来的工作打点基础. ...

  10. 树莓派和荔枝派,局域网socket 通信

    在虚拟机上面实现了socket 之间的通信之后,突发奇想,想要实现树莓派和 荔枝派zero之间的通信. 1.直接将虚拟机下面的程序复制过来,重新编译并且运行.发现是没有办法进行通信的.客户端一直报错: ...