Redis之十:Spring Data Redis --- CrudRepository方式

2024-03-02 18:44

本文主要是介绍Redis之十:Spring Data Redis --- CrudRepository方式,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

SpringData Redis CrudRepository方式

Spring Data Redis 的 CrudRepository 是 Spring Data 框架中用于提供基础 CRUD(创建、读取、更新和删除)操作的一个接口。在与 Redis 集成时,尽管 Redis 是一个键值存储系统,并没有像关系型数据库那样直接支持复杂的 SQL 查询语句,但 Spring Data Redis 通过自定义的 Repository 接口提供了对 Redis 数据进行 CRUD 操作的能力。

CrudRepository 是一系列通用数据访问操作的基接口,它包含了一些如 save(T entity)deleteById(ID id)findAll() 等方法。当应用于 Redis 上时,这些方法会映射到相应的 Redis 命令或数据结构操作上。

一、配置 POM 依赖

两种方式:使用连接池 和 不使用连接池

要使用连接池,多一个依赖,下面配置:

<dependencies><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><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><optional>true</optional></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope><exclusions><exclusion><groupId>org.junit.vintage</groupId><artifactId>junit-vintage-engine</artifactId></exclusion></exclusions></dependency>
</dependencies>

二、 配置文件 连接池

# Redis数据库索引,默认为0
spring.redis.database=0
# Redis端口
spring.redis.port=6379
# Redis服务器主机
spring.redis.host=localhost
# 密码
spring.redis.password=123456# 如果要用下面的连接池 则需要添加依赖commons-pool2
# 连接池最大连接数
spring.redis.lettuce.pool.max-active=8
# 连接池最大空闲
spring.redis.lettuce.pool.max-idle=8
# 连接池最小空闲
spring.redis.lettuce.pool.min-idle=2
# 连接池最大阻塞等待时间
spring.redis.lettuce.pool.max-wait=1ms
# 超时时间
spring.redis.lettuce.shutdown-timeout=100ms

三、 编写实体类

注意:使用 redis 注解 @RedisHash

@Data
@RedisHash("User")               //----------注意 支持redis注解
public class User {@Id                           //-----------注意主键-----private String userId;@Indexed                    //-----------注意:如果要按 name 作为条件查询,则必须要加注解 @Indexedprivate String name;private Integer age;private Date createTime = new Date();
}

如果我们需要在下面的 DAO 中按属性查询 (ByName) , 则在保存对象前,必须已经添加了 @Indexed 注解,否则查询时查询不到。

注意:保存入库前!!!

三、编写 Dao 接口

自定义接口只需要继承 CrudRepository,默认接口中已经自带 CRUD 方法,如果需要其他方法,按约定自定义方法。

public interface UserDao extends CrudRepository<User,String> {//按约定规则 自定义 按名字属性查询public List<User> findUserByName(String sname);Student findBySid(Integer sid);// 可以查全部List<Student> queryAllBy();
}

四、测试

package com.example.demo;import com.example.demo.pojo.User;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;import java.lang.reflect.Array;
import java.util.List;
import java.util.Optional;@SpringBootTest
class DemoApplicationTests {@Autowiredprivate UserDao userDao;@Testvoid save() {User user = new User();user.setAge(35);user.setName("Jack");user.setUserId("3");//保存和修改  支持。 主键存在则修改,不存在则保存userDao.save(user);}@Testvoid get(){Optional<User> byId = userDao.findById("1");if(byId.isPresent()){System.out.println(byId.get());}else{System.out.println("没有值");}}@Testvoid findByname(){//测试自定义方法   (如果不支持,注意实体类中是否加@Indexed ,且在数据入库前是否已经加此注解) List<User> list = userDao.findUserByName("Jack");System.out.println(list);}@Testvoid del(){//支持删除userDao.deleteById("2");}}

执行保存之后,通过idea 的 redis 浏览器客户端,查看结果

可以看到,保存时,把实体对象 标注 @Id 的属性(主键)存入set 集合,保证主键唯一的特点。再把对象的属性和数据,转为 hash 类型存储。

这篇关于Redis之十:Spring Data Redis --- CrudRepository方式的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/767070

相关文章

Linux之systemV共享内存方式

《Linux之systemV共享内存方式》:本文主要介绍Linux之systemV共享内存方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、工作原理二、系统调用接口1、申请共享内存(一)key的获取(二)共享内存的申请2、将共享内存段连接到进程地址空间3、将

Maven中引入 springboot 相关依赖的方式(最新推荐)

《Maven中引入springboot相关依赖的方式(最新推荐)》:本文主要介绍Maven中引入springboot相关依赖的方式(最新推荐),本文给大家介绍的非常详细,对大家的学习或工作具有... 目录Maven中引入 springboot 相关依赖的方式1. 不使用版本管理(不推荐)2、使用版本管理(推

Java 中的 @SneakyThrows 注解使用方法(简化异常处理的利与弊)

《Java中的@SneakyThrows注解使用方法(简化异常处理的利与弊)》为了简化异常处理,Lombok提供了一个强大的注解@SneakyThrows,本文将详细介绍@SneakyThro... 目录1. @SneakyThrows 简介 1.1 什么是 Lombok?2. @SneakyThrows

在 Spring Boot 中实现异常处理最佳实践

《在SpringBoot中实现异常处理最佳实践》本文介绍如何在SpringBoot中实现异常处理,涵盖核心概念、实现方法、与先前查询的集成、性能分析、常见问题和最佳实践,感兴趣的朋友一起看看吧... 目录一、Spring Boot 异常处理的背景与核心概念1.1 为什么需要异常处理?1.2 Spring B

如何在 Spring Boot 中实现 FreeMarker 模板

《如何在SpringBoot中实现FreeMarker模板》FreeMarker是一种功能强大、轻量级的模板引擎,用于在Java应用中生成动态文本输出(如HTML、XML、邮件内容等),本文... 目录什么是 FreeMarker 模板?在 Spring Boot 中实现 FreeMarker 模板1. 环

SpringMVC 通过ajax 前后端数据交互的实现方法

《SpringMVC通过ajax前后端数据交互的实现方法》:本文主要介绍SpringMVC通过ajax前后端数据交互的实现方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价... 在前端的开发过程中,经常在html页面通过AJAX进行前后端数据的交互,SpringMVC的controll

Redis 热 key 和大 key 问题小结

《Redis热key和大key问题小结》:本文主要介绍Redis热key和大key问题小结,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、什么是 Redis 热 key?热 key(Hot Key)定义: 热 key 常见表现:热 key 的风险:二、

Java中的工具类命名方法

《Java中的工具类命名方法》:本文主要介绍Java中的工具类究竟如何命名,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录Java中的工具类究竟如何命名?先来几个例子几种命名方式的比较到底如何命名 ?总结Java中的工具类究竟如何命名?先来几个例子JD

Java Stream流使用案例深入详解

《JavaStream流使用案例深入详解》:本文主要介绍JavaStream流使用案例详解,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录前言1. Lambda1.1 语法1.2 没参数只有一条语句或者多条语句1.3 一个参数只有一条语句或者多

Spring Security自定义身份认证的实现方法

《SpringSecurity自定义身份认证的实现方法》:本文主要介绍SpringSecurity自定义身份认证的实现方法,下面对SpringSecurity的这三种自定义身份认证进行详细讲解,... 目录1.内存身份认证(1)创建配置类(2)验证内存身份认证2.JDBC身份认证(1)数据准备 (2)配置依