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

相关文章

Spring boot整合dubbo+zookeeper的详细过程

《Springboot整合dubbo+zookeeper的详细过程》本文讲解SpringBoot整合Dubbo与Zookeeper实现API、Provider、Consumer模式,包含依赖配置、... 目录Spring boot整合dubbo+zookeeper1.创建父工程2.父工程引入依赖3.创建ap

Linux线程之线程的创建、属性、回收、退出、取消方式

《Linux线程之线程的创建、属性、回收、退出、取消方式》文章总结了线程管理核心知识:线程号唯一、创建方式、属性设置(如分离状态与栈大小)、回收机制(join/detach)、退出方法(返回/pthr... 目录1. 线程号2. 线程的创建3. 线程属性4. 线程的回收5. 线程的退出6. 线程的取消7.

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

golang程序打包成脚本部署到Linux系统方式

《golang程序打包成脚本部署到Linux系统方式》Golang程序通过本地编译(设置GOOS为linux生成无后缀二进制文件),上传至Linux服务器后赋权执行,使用nohup命令实现后台运行,完... 目录本地编译golang程序上传Golang二进制文件到linux服务器总结本地编译Golang程序

Linux下删除乱码文件和目录的实现方式

《Linux下删除乱码文件和目录的实现方式》:本文主要介绍Linux下删除乱码文件和目录的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下删除乱码文件和目录方法1方法2总结Linux下删除乱码文件和目录方法1使用ls -i命令找到文件或目录

Spring Boot spring-boot-maven-plugin 参数配置详解(最新推荐)

《SpringBootspring-boot-maven-plugin参数配置详解(最新推荐)》文章介绍了SpringBootMaven插件的5个核心目标(repackage、run、start... 目录一 spring-boot-maven-plugin 插件的5个Goals二 应用场景1 重新打包应用

SpringBoot+EasyExcel实现自定义复杂样式导入导出

《SpringBoot+EasyExcel实现自定义复杂样式导入导出》这篇文章主要为大家详细介绍了SpringBoot如何结果EasyExcel实现自定义复杂样式导入导出功能,文中的示例代码讲解详细,... 目录安装处理自定义导出复杂场景1、列不固定,动态列2、动态下拉3、自定义锁定行/列,添加密码4、合并

Spring Boot集成Druid实现数据源管理与监控的详细步骤

《SpringBoot集成Druid实现数据源管理与监控的详细步骤》本文介绍如何在SpringBoot项目中集成Druid数据库连接池,包括环境搭建、Maven依赖配置、SpringBoot配置文件... 目录1. 引言1.1 环境准备1.2 Druid介绍2. 配置Druid连接池3. 查看Druid监控

Linux在线解压jar包的实现方式

《Linux在线解压jar包的实现方式》:本文主要介绍Linux在线解压jar包的实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux在线解压jar包解压 jar包的步骤总结Linux在线解压jar包在 Centos 中解压 jar 包可以使用 u

Java中读取YAML文件配置信息常见问题及解决方法

《Java中读取YAML文件配置信息常见问题及解决方法》:本文主要介绍Java中读取YAML文件配置信息常见问题及解决方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要... 目录1 使用Spring Boot的@ConfigurationProperties2. 使用@Valu