网站导航栏设计,网站运营怎样做,免费seo排名网站,wordpress中记录博客发展的插件SpringData Redis CrudRepository方式 Spring Data Redis 的 CrudRepository 是 Spring Data 框架中用于提供基础 CRUD#xff08;创建、读取、更新和删除#xff09;操作的一个接口。在与 Redis 集成时#xff0c;尽管 Redis 是一个键值存储系统#xff0c;并没有像关系型…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 依赖
两种方式使用连接池 和 不使用连接池
要使用连接池多一个依赖下面配置
dependenciesdependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency!-- 如果使用连接池 --dependencygroupIdorg.apache.commons/groupIdartifactIdcommons-pool2/artifactId/dependencydependencygroupIdorg.projectlombok/groupIdartifactIdlombok/artifactIdoptionaltrue/optional/dependencydependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-test/artifactIdscopetest/scopeexclusionsexclusiongroupIdorg.junit.vintage/groupIdartifactIdjunit-vintage-engine/artifactId/exclusion/exclusions/dependency
/dependencies
二、 配置文件 连接池
# Redis数据库索引默认为0
spring.redis.database0
# Redis端口
spring.redis.port6379
# Redis服务器主机
spring.redis.hostlocalhost
# 密码
spring.redis.password123456# 如果要用下面的连接池 则需要添加依赖commons-pool2
# 连接池最大连接数
spring.redis.lettuce.pool.max-active8
# 连接池最大空闲
spring.redis.lettuce.pool.max-idle8
# 连接池最小空闲
spring.redis.lettuce.pool.min-idle2
# 连接池最大阻塞等待时间
spring.redis.lettuce.pool.max-wait1ms
# 超时时间
spring.redis.lettuce.shutdown-timeout100ms
三、 编写实体类
注意使用 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 CrudRepositoryUser,String {//按约定规则 自定义 按名字属性查询public ListUser findUserByName(String sname);Student findBySid(Integer sid);// 可以查全部ListStudent 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(){OptionalUser byId userDao.findById(1);if(byId.isPresent()){System.out.println(byId.get());}else{System.out.println(没有值);}}Testvoid findByname(){//测试自定义方法 如果不支持注意实体类中是否加Indexed ,且在数据入库前是否已经加此注解 ListUser list userDao.findUserByName(Jack);System.out.println(list);}Testvoid del(){//支持删除userDao.deleteById(2);}}执行保存之后通过idea 的 redis 浏览器客户端查看结果 可以看到保存时把实体对象 标注 Id 的属性主键存入set 集合保证主键唯一的特点。再把对象的属性和数据转为 hash 类型存储。