数据库
首页 > 数据库> > 小小白学SpringBoot(六)——整合 Redis

小小白学SpringBoot(六)——整合 Redis

作者:互联网

小白一个,文章中可能说的不严谨或者错的地方,请指出我立马改,我超快的,嘿嘿。

整合 Redis

Redis 介绍

Redis 是内存,与JPA 和 Mybatis 不同的是,JPA 和 Mybatis 都是将数据存储在硬盘里,而 Redis 是将数据存储在内存中。
优点:
速度快;
数据类型更丰富,例如:集合、列表、散列等;
操作具有原子性,如果两个客户端并发对数据进行访问或者修改,服务器能接受到更新后的值;
提供多种功能:出来可以作为数据库使用外,还可以作为缓存和和消息中间件

下载与安装

下载 Redis:https://github.com/tporadowski/redis/releases
在这里插入图片描述
我用的是免安装的,解压后找到 redis-server.exe启动
在这里插入图片描述
显示这个页面就是启动成功
在这里插入图片描述
但是,这个页面得一直开着服务才会一直启动,关闭页面,服务也会随着关闭。
将 redis 设置为 系统服务可以避免这个问题,详情见:
https://blog.csdn.net/weixin_44162239/article/details/115280970

下载 redis 的可视化界面
https://www.zdfans.com/html/67730.html
这个没什么,就选好存储路径一直点下一步就好了

连接服务器
在这里插入图片描述
启动 redis 服务
用户名和密码默认为空,只需要自己取个连接名即可

连接成功后长这样
在这里插入图片描述

实例测试

同样需要将所有与 Redis 无关的依赖 及其他注释掉
因为 Redis 操作的是内存,所以不需要数据库连接

1、加入依赖

<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
 </dependency>

2、编写配置文件

连接 Redis 服务器配置

spring.redis.host=127.0.0.1  //  本地地址
spring.redis.port=6379   //  默认端口号
spring.redis.password=   //  密码默认为空,可以自己设置密码

3、编写实体类
定义了一个 具有 id(主键)、name 和 age 的person表

package com.zknu.demo.model;

import org.springframework.data.annotation.Id;
import org.springframework.data.redis.core.RedisHash;
import org.springframework.data.redis.core.index.Indexed;

@RedisHash("person")
// 指定该实体类在数据库中的存储空间
public class Person {
    @Id   //  主键
    private Integer id;

    @Indexed  //生成二级索引,如果不标注 Indexed,以 name 为条件的查找均为空
    private String name;

    @Indexed
    private Integer age;

//  记得加 构造方法 ,添加数据的时候需要
    public Person(String name, Integer age) {
        this.name = name;
        this.age = age;
    }

    public Integer getId() {
        return id;
    }

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

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public Integer getAge() {
        return age;
    }

    public void setAge(Integer age) {
        this.age = age;
    }

    @Override
    public String toString() {
        return "Person{" +
                "id=" + id +
                ", name='" + name + '\'' +
                ", age=" + age +
                '}';
    }
}

4、编写接口

package com.zknu.demo.mapper;

import com.zknu.demo.model.Person;
import org.springframework.data.repository.CrudRepository;

import java.util.List;

public interface PersonRepository extends CrudRepository<Person,Integer> {
    List<Person> findByAge(Integer age);
    // 查找符合 age 条件的数据
    List<Person> findByAgeOrName(Integer age,String name);
    // 查找符合 age 条件或 name 条件的数据
}

继承 CrudRepository 接口,不继承 JpaRepostory接口是因为该接口是JPA特有的,想继承JPA接口需添加JPA依赖

5、测试类

添加数据

	@Autowired
    private PersonRepository repository;
    @Test
    public void addPersonTest(){
        Person person = new Person("wrk",20);
        Person person1 = new Person("aaa",40);
        Person person2 = new Person("bbb",10);

        repository.save(person);
        repository.save(person1);
        repository.save(person2);
    }

运行结果

重载服务器后,发现有数据
在这里插入图片描述
查找数据

@Test
    public void selectPersonTest(){
        System.out.println(repository.findByAge(20));
        System.out.println(repository.findByAgeOrName(20,"aaa"));
    }

运行结果
在这里插入图片描述
更新数据

 @Test
    public void updatePersonTest(){
        Person person = repository.findByName("aaa").get(0);
        person.setName("SpringBoot");
        System.out.println(repository.save(person));

    }

运行结果
在这里插入图片描述
此时 Redis 服务中原 aaa 的 name 也变成了 Springboot(记得刷新)
在这里插入图片描述
删除数据

 @Test
    public void deletePersonTest(){
        Person person = repository.findByName("bbb").get(0);
        // 返回符合name为bbb所有数据的第一条数据
        repository.delete(person);
//repository.deleteAll();   删除所有数据
    }

运行结果

name 中的三项变成了两项
在这里插入图片描述

标签:SpringBoot,repository,redis,age,Redis,Person,小小白,public,name
来源: https://blog.csdn.net/weixin_44162239/article/details/115285012