Redis的Java客户端另一个很火的技术栈------SpringDataRedis

106 阅读3分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第25天,点击查看活动详情

引言

SpringDataRedis和之前介绍的Jedis一样都是Java的redis客户端

SpringData是Spring中数据擦欧总的模块,包括对各种数据库的集成

其中,Redis的集成模块就是SpringDataRedis

当然SpringDataRedis也有很多的版本,这里我们可以选择一个稳定版本来使用。

几个好处

1.提供了对不同的Redis客户端的整合

2.提供了RedisTemplate的统一的API来操作Redis

3.支持Redis哨兵和redis集群

4.支持Redis的发布订阅模型

5.支持基于Lettuce的响应式编程

6.支持基于JDK,JSON,字符串,Spring对象的数据序列化及反序列化

7.支持基于Redis的JDKCollection的实现

8.Jedis中大量的原生的Redis操作,存储的往往是字符串,面对复杂的对象时要繁重的手动化操作,没有SpringDataRedis的操作方便。

一些缺点

我们Jedis中的指令往往是原生的Redis的操作,而SpringDataRedis将其进行了封装分组,学习成本较高。

依赖项

<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>

传统的jar包引入

传统的jar导入并不多赘述,也不推荐。

众所周知,传统Jar包的导入即去对应的网址下载所需的jar包,然后放在指定的目录的下,但这么做有很多的问题与缺点

统jar包导入的缺点

首先要去找到对应的官网下的对应版本的jar包,有时候还会遇到广告的网址,要去做一个筛选判断,而且即便找到了对应好的所需jar包的官网,繁重的英文,大量的不知道干什么的文件......

而且即便是找到了正确的资源jar包,较慢的下载速度,较为繁琐的引入方式,让人很难受。

Maven项目管理

这里我们采用Maven项目管理的方式来完成jar包的引入,这里的另一个好处是,传统的项目的创建,比如idea的项目,在eclipse上未必能运行。而采用Maven项目管理的方式,也一定程度上提高了项目的兼容性。同时在Maven项目中的pom.xml中直接导坐标的形式,一定程度上非常非常非常方便。

pom.xml依赖如下:

<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>

接下来我们做一下刷新。

完成了Jar包的导入。

yml的配置

我们首先找到application.properties文件,将其后缀名改成yml

yml和properties有什么区别呢?

properties 和 yml 都是 Spring Boot 支持的两种配置文件,它们可以看作是 Spring Boot 在不同时期的两款“产品”。在 Spring Boot 时代已经不需要使用 XML 文件格式来配置项目了,取而代之的是 properties 或 yml 文件。

properties 配置文件属于早期,也是目前创建 Spring Boot(2.x)项目时默认的配置文件格式,而 yml 可以看做是对 properties 配置文件的升级,属于 Spring Boot 的“新版”配置文件。

properties 和 yml 的区别主要体现在以下 4 点:

  1. 定义和定位不同;
  2. 语法不同;
  3. yml 更好的配置多种数据类型;
  4. yml 支持多种语言、通用性更好。

yml中配置如下:

spring:
  redis:
    host: 127.0.0.1
    port: 6379
    password: 123456
    lettuce:
      pool:
        max-active: 8
        max-idle: 8
        min-idle: 0
        max-wait: 100ms

完成配置。

测试用例

package com.example.lyyshop;

import com.example.lyyshop.Dao.DaoMapper;
import com.example.lyyshop.RealClass.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.core.RedisTemplate;

import java.util.List;

@SpringBootTest
class LyyShopApplicationTests {
   @Autowired(required = false)
   private RedisTemplate redisTemplate;

   @Test
   void contextLoads() {
      redisTemplate.opsForValue().set("name","redis");

   }

}

接下来我们连接redis,输入get name成功获取到"redis"