SpringBoot整合Redis

说在前头: 本人为大二在读学生,书写文章的目的是为了对自己掌握的知识和技术进行一定的记录,同时乐于与大家一起分享,因本人资历尚浅,能力有限,文章难免存在一些错漏之处,还请阅读此文章的大牛们见谅与斧正。若在阅读时有任何的问题,也可通过评论提出,本人将根据自身能力对问题进行一定的解答。

前言


Redis是目前业界使用最广泛的内存数据存储。相比memcached,`Redis支持更丰富的数据结构`,例如hashes, lists, sets等,`同时支持数据持久化`。除此之外,Redis还提供一些类数据库的特性,比如事务,HA,主从库。可以说Redis兼具了缓存系统和数据库的一些特性,因此有着丰富的应用场景。本文将介绍SpringBoot整合和操作Redis。

整合


1.引入依赖

主要引入spring-boot-starter-data-redis 依赖即可使SpringBoot操作Redis

<dependency>
	<groupId>org.springframework.boot</groupId>
    	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-test</artifactId>
	<scope>test</scope>
</dependency>

2. 编写启动类

启动类无需做其他的修改,按正常的流程编写即可

@SpringBootApplication
public class Application {
    public static void main(String[] args) {
        SpringApplication.run(Application.class, args);
    }
}

3.编写application.yml配置文件

spring:
  redis:
    database: 0		# 链接的数据库索引(默认为0)
    port: 6379		# redis服务端口(默认为6379)
    host: 127.0.0.1	# redis服务地址

4.编写测试类

具体操作redis的对象是RedisTemplate,由spring注入,支持泛型!

@SpringBootTest
class ApplicationTests {

    @Autowired
    RedisTemplate<String, String> redisTemplate;

    @Test
    public void set() {
        String string = "这是用于测试的字符串!";
        // 将字符串以键值对应的方式存入redis中
        redisTemplate.opsForValue().set("string", string);
    }

    @Test
    public void get() {
        // 获取set方法中存入的字符串
        String string = redisTemplate.opsForValue().get("string");
        System.out.println("返回结果:" + string);
    }

}

5.开始测试

首先我们需要运行测试类中的set()方法,将字符串对象string存入redis,set方法运行完毕后,我们可以使用redis的可视化工具Redis Desktop Manager查看(如下图)
set方法运行结果
可以看到,数据库索引为0,键为string,值为“这是用于测试的字符串”的字符串数据已经成功存入redis中,接下来,我们试着将该字符串从redis中取出。因此,我们需要接着运行get()方法,运行成功后,控制台打印信息将会如下图

运行结果

扩展


1.操作其他类型的数据

在上面的测试中,我们试着操作了string类型的数据。但我们都知道,redis不只是提供了字符串的键值对应数据,还提供了众多的数据类型供我们使用,以下是常用的数据类型的具体操作的对应方法。

  • opsForValue: 用于操作String类型的对象
  • opsForList: 用于操作List类型的对象
  • opsForHash: 用于操作Hash类型的对象
  • opsForSet: 用于操作Set类型的对象
  • opsZSet: 用于操作ZSet类型的对象

2.设置缓存过期时间

springboot操作redis时,是可以对redis存入的值设置过期时间的,拿上面测试的代码做例子,在未设置过期时间时,存入redis只需要如下:

redisTemplate.opsForValue().set("string", string);

当我们需要对该字符串设置30秒的过期时间时:如下

redisTemplate.opsForValue().set("string", string, 30, TimeUnit.SECONDS);

3.对象序列化问题

如果我们需要将我们自己自定义的一个对象存入redis中,我们需要先将该对象实现Serializable接口,使该对象能够序列化。(若对象未实现该接口,redis将无法将该对象存入,并且将报出以下错误)
对象未序列化的报错信息
关于SpringBoot整合Redis就讲到这里啦,若有什么遗漏之处还请各位指正!!!

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云丶言

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值