spring boot 整合redis

1.在pom文件中添加spring-boot-starter-data-redis依赖启动器

XML 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

2.编写三个实体类

Person类

java 复制代码
@RedisHash("persons")  // 指定操作实体类对象在Redis数据库中的存储空间
public class Person {

    @Id// 标识实体类主键
    private String id;
    // 标识对应属性在Redis数据库中生成二级索引,索引名就是属性名,可以方便地进行数据条件查询
    @Indexed
    private String firstname;
    @Indexed
    private String lastname;
    private Address address;
    private List<FamilyMember> familyMemberList;

    public Person() {    }

    public Person(String firstname, String lastname) {

        this.firstname = firstname;
        this.lastname = lastname;

    }

    public String getId() {
        return id;
    }

    public void setId(String id) {
        this.id = id;
    }

    public String getFirstname() {
        return firstname;
    }

    public void setFirstname(String firstname) {
        this.firstname = firstname;
    }

    public String getLastname() {
        return lastname;
    }

    public void setLastname(String lastname) {
        this.lastname = lastname;
    }

    public Address getAddress() {
        return address;
    }

    public void setAddress(Address address) {
        this.address = address;
    }

    public List<FamilyMember> getFamilyMemberList() {
        return familyMemberList;
    }

    public void setFamilyMemberList(List<FamilyMember> familyMemberList) {
        this.familyMemberList = familyMemberList;
    }

    @Override
    public String toString() {
        return "Person{" +
                "id='" + id + '\'' +
                ", firstname='" + firstname + '\'' +
                ", lastname='" + lastname + '\'' +
                ", address=" + address +
                ", familyMemberList=" + familyMemberList +
                '}';
    }
}

Address 地址类

java 复制代码
public class Address {

    @Indexed
    private String city;
    @Indexed
    private String country;

    public Address() {

    }

    /**
     *
     * @param city 城市
     * @param country 国家
     */
    public Address(String city, String country) {

        this.city = city;
        this.country = country;

    }

    public String getCity() {
        return city;
    }

    public void setCity(String city) {
        this.city = city;
    }

    public String getCountry() {
        return country;
    }

    public void setCountry(String country) {
        this.country = country;
    }

    @Override
    public String toString() {
        return "Address{" +
                "city='" + city + '\'' +
                ", country='" + country + '\'' +
                '}';
    }
}

FamilyMember 家庭成员类

java 复制代码
public class FamilyMember {

    @Indexed
    private String type;

    @Indexed
    private String username;

    public FamilyMember() {
    }

    public FamilyMember(String type, String username) {
        this.type = type;
        this.username = username;
    }

    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getUsername() {
        return username;
    }

    public void setUsername(String username) {
        this.username = username;
    }

    @Override
    public String toString() {
        return "FamilyMember{" +
                "type='" + type + '\'' +
                ", username='" + username + '\'' +
                '}';
    }
}

3.编写Repository接口

不需要添加spring-boot-starter-data-jpa这个依赖,即:

XML 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-jpa</artifactId>
</dependency>

只要继承CrudRepository即可,如下:

java 复制代码
public interface PersonRepository extends CrudRepository<Person, String> {

    List<Person> findByLastname(String lastname);

    Page<Person> findPersonByLastname(String lastname, Pageable page);

    List<Person> findByFirstnameAndLastname(String firstname, String lastname);

    List<Person> findByAddress_City(String city);

    List<Person> findByFamilyMemberList_Username(String username);

}

4.在全局配置文件application.properties中添加Redis数据库连接配置

复制代码
# Redis服务器地址
spring.redis.host=127.0.0.1

# Redis服务器连接端口
spring.redis.port=6379

# Redis服务器连接密码(默认为空)
spring.redis.password=

5.编写单元测试进行接口方法测试以及整合测试

java 复制代码
@SpringBootTest
class RedisTests {

   @Autowired
    private PersonRepository personRepository;

   @Test
    public void testSave(){

       Person person1 = personRepository.save(new Person("James", "Harden"));
       System.out.println(person1);

       Person person2 = new Person("张", "有才");

       Address address = new Address("北京", "中国");
       person2.setAddress(address);

       //创建并添加家庭成员
       FamilyMember familyMember1 = new FamilyMember("父亲", "张朝阳");
       FamilyMember familyMember2 = new FamilyMember("母亲", "王美美");

       ArrayList<FamilyMember> familyMembers = new ArrayList<>();
       familyMembers.add(familyMember1);
       familyMembers.add(familyMember2);
       person2.setFamilyMemberList(familyMembers);

       System.out.println(personRepository.save(person2));

   }

    @Test
    public void selectPerson() {

        List<Person> list = personRepository.findByAddress_City("北京");
        System.out.println(list);

    }

    @Test
    public void updatePerson() {

        Person person = personRepository.findByFirstnameAndLastname("张","有才").get(0);
        person.setLastname("小明");
        Person update = personRepository.save(person);
        System.out.println(update);

    }

    @Test
    public void deletePerson() {

        Person person = personRepository.findByFirstnameAndLastname("张","小明").get(0);
        personRepository.delete(person);

    }
}
相关推荐
IT毕设实战小研1 小时前
基于Spring Boot 4s店车辆管理系统 租车管理系统 停车位管理系统 智慧车辆管理系统
java·开发语言·spring boot·后端·spring·毕业设计·课程设计
一只爱撸猫的程序猿2 小时前
使用Spring AI配合MCP(Model Context Protocol)构建一个"智能代码审查助手"
spring boot·aigc·ai编程
甄超锋2 小时前
Java ArrayList的介绍及用法
java·windows·spring boot·python·spring·spring cloud·tomcat
鼠鼠我捏,要死了捏3 小时前
生产环境Redis缓存穿透与雪崩防护性能优化实战指南
redis·cache
武昌库里写JAVA5 小时前
JAVA面试汇总(四)JVM(一)
java·vue.js·spring boot·sql·学习
Pitayafruit6 小时前
Spring AI 进阶之路03:集成RAG构建高效知识库
spring boot·后端·llm
zru_96026 小时前
Spring Boot 单元测试:@SpyBean 使用教程
spring boot·单元测试·log4j
甄超锋6 小时前
Java Maven更换国内源
java·开发语言·spring boot·spring·spring cloud·tomcat·maven
曾经的三心草7 小时前
微服务的编程测评系统11-jmeter-redis-竞赛列表
redis·jmeter·微服务
还是鼠鼠7 小时前
tlias智能学习辅助系统--Maven 高级-私服介绍与资源上传下载
java·spring boot·后端·spring·maven