文章目录

  • 一、使用Spring Boot 整合 Redis
    • (一)搭建Redis环境
      • 1.下载Redis安装压缩包
      • 2.将Redis安装包解压到到D:\Program Files\redis目录
      • 3.给Redis配置环境变量
      • 4.启动Redis服务器
      • 5.启动Redis客户端
    • (二)安装Redis可视化管理工具
      • 1.下载Redis可视化管理工具
      • 2.安装Redis可视化管理工具
      • 3.启动Redis可视化管理工具
      • 4.Redis可视化工具连接Redis服务
      • 5.打开Redis可视化工具的控制台
      • 6.利用可视化工具操作键值对
    • (三)创建Spring Boot项目RedisDemo
    • (四)创建实体类
      • 1.创建地址实体类Address
      • 2.创建家庭实体类Family
      • 3.创建人实体类Person
    • (五)创建自定义Repository接口
    • (六)在全局配置文件配置Redis属性
    • (七)在测试类里编写测试方法
      • 1.创建测试方法testAddPerson()
      • 2.创建测试方法testFindAll()
      • 3.测试personRespository的其它方法(课堂作业)
    • (八)测试自定义个性化查询方法
      • 1.在PersonRepository接口定义方法
      • 2.在测试类创建测试方法testFindPersonByLastName()
  • 二、课后作业
    • 任务1:在测试类创建测试方法testFindByLastName()
    • 任务2、在测试类创建测试方法testFindPersonByLastNameAndFirstName()
    • 任务3、在测试类创建测试方法testFindByAddress_City()
    • 任务4、在测试类创建测试方法testFindByFamilyList_Name()

一、使用Spring Boot 整合 Redis

(一)搭建Redis环境

1.下载Redis安装压缩包

下载:https://pan.baidu.com/s/1x8AV7w1PE6fR7xS7lwAOWg
提取码:j4hq

2.将Redis安装包解压到到D:\Program Files\redis目录

3.给Redis配置环境变量

4.启动Redis服务器

  • 启动命令行窗口,键入redis-server命令

5.启动Redis客户端

  • 启动命令行窗口,键入redis-cli命令 - 创建键值对,按键获取值 - 键入exit命令,退出客户端
  • 注意:如出现下图情况,原因是在cmd窗口输入redis-server后,关闭该窗口输入redis-cli导致(所以输入命令redis-server后,不要关闭,重新打开cmd窗口输入redis-cli)

(二)安装Redis可视化管理工具

1.下载Redis可视化管理工具

下载:https://pan.baidu.com/s/1EaCKpkGr04QM8QHu3H-G_g
提取码:oonx

2.安装Redis可视化管理工具



3.启动Redis可视化管理工具

4.Redis可视化工具连接Redis服务

  • 在命令行窗口,启动Redis服务

5.打开Redis可视化工具的控制台


在控制台创建键值对,按键获取值

可视化查看刚才创建的键值对

6.利用可视化工具操作键值对

创建键值对

(三)创建Spring Boot项目RedisDemo




(四)创建实体类

1.创建地址实体类Address

package net.lbj.lesson08.bean;import org.springframework.data.redis.core.index.Indexed;/*** 地址实体类* 20210517*/
public class Address {@Indexedprivate String country; //国家@Indexedprivate String city; //城市public Address(String country, String city) {this.country = country;this.city = city;}public String getCountry() {return country;}public void setCountry(String country) {this.country = country;}public String getCity() {return city;}public void setCity(String city) {this.city = city;}@Overridepublic String toString() {return "Address{" +"country='" + country + '\'' +", city='" + city + '\'' +'}';}
}

2.创建家庭实体类Family

package net.lbj.lesson08.bean;import org.springframework.data.redis.core.index.Indexed;/*** 家庭实体类* 20210517*/
public class Family {@Indexedprivate String type; //成员类型@Indexedprivate String name; //成员名public Family(String type, String name) {this.type = type;this.name = name;}public String getType() {return type;}public void setType(String type) {this.type = type;}public String getName() {return name;}public void setName(String name) {this.name = name;}@Overridepublic String toString() {return "Family{" +"type='" + type + '\'' +", name='" + name + '\'' +'}';}
}

3.创建人实体类Person

package net.lbj.lesson08.bean;import org.springframework.data.annotation.Id;
import org.springframework.data.redis.core.RedisHash;
import org.springframework.data.redis.core.index.Indexed;import java.util.List;/*** 人实体类* 20210517*/
@RedisHash("person")
public class Person {@Id  //主键private String id;//生成二级索引,方便查询@Indexedprivate String firstName; //名@Indexedprivate String lastName; //姓private Address address; //家庭地址private List<Family> familyList; //家庭成员public Person(String id, String firstName, String lastName, Address address, List<Family> familyList) {this.id = id;this.firstName = firstName;this.lastName = lastName;this.address = address;this.familyList = familyList;}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<Family> getFamilyList() {return familyList;}public void setFamilyList(List<Family> familyList) {this.familyList = familyList;}@Overridepublic String toString() {return "Person{" +"id='" + id + '\'' +", firstName='" + firstName + '\'' +", lastName='" + lastName + '\'' +", address=" + address +", familyList=" + familyList +'}';}
}

(五)创建自定义Repository接口

在net.lbj.lesson08包里创建repository子包,并在子包中创建接口PersonRepository

(六)在全局配置文件配置Redis属性

(七)在测试类里编写测试方法

1.创建测试方法testAddPerson()

@Testpublic void testAddPerson() {// 添加第一个人Address address = new Address("中国", "泸州");Family family1 = new Family("儿子", "张晓承");Family family2 = new Family("女儿", "张晓霞");List<Family> familyList = new ArrayList<Family>();familyList.add(family1);familyList.add(family2);Person person = new Person("1", "莫言", "张", address, familyList);personRepository.save(person);// 添加第二个人address = new Address("中国", "上海");family1 = new Family("儿子", "李诚源");family2 = new Family("女儿", "李晓丽");familyList = new ArrayList<Family>();familyList.add(family1);familyList.add(family2);person = new Person("2", "承鹏", "李", address, familyList);personRepository.save(person);// 添加第三个人address = new Address("中国", "北京");family1 = new Family("儿子", "唐玉海");family2 = new Family("女儿", "唐雨涵");familyList = new ArrayList<Family>();familyList.add(family1);familyList.add(family2);person = new Person("3", "大明", "唐", address, familyList);personRepository.save(person);// 添加第四个人address = new Address("中国", "北京");family1 = new Family("儿子", "张大明");family2 = new Family("女儿", "张丽丽");familyList = new ArrayList<Family>();familyList.add(family1);familyList.add(family2);person = new Person("4", "文勇", "张", address, familyList);personRepository.save(person);System.out.println("成功地添加了4条记录~");}

运行查看结果
在命令行窗口启动redis服务

再次运行查看结果

打开Redis可视化工具查看

2.创建测试方法testFindAll()

3.测试personRespository的其它方法(课堂作业)

  • 创建测试方法testFindById()
  • 创建测试方法deleteAll()

    运行testFindAll()查看

(八)测试自定义个性化查询方法

1.在PersonRepository接口定义方法

package net.lbj.lesson08.repository;import net.lbj.lesson08.bean.Person;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.Pageable;
import org.springframework.data.repository.CrudRepository;import java.util.List;/*** 人仓库接口* 20210517*/
public interface PersonRepository extends CrudRepository<Person, String> {//自定义个性化查询,方法名需要符合特定的规范List<Person> findByLastName(String lastName);Page<Person> findPersonByLastName(String lastName, Pageable pageable);List<Person> findPersonByLastNameAndFirstName(String lastName, String firstName);List<Person> findByAddress_City(String city);List<Person> findByFamilyList_Name(String name);
}

2.在测试类创建测试方法testFindPersonByLastName()

二、课后作业

注意:在运行的时候,一定要在cmd运行命令:redis-server

任务1:在测试类创建测试方法testFindByLastName()

查找姓“张”的记录

任务2、在测试类创建测试方法testFindPersonByLastNameAndFirstName()

查找lastName为“唐”,firstName为“大明”的记录

任务3、在测试类创建测试方法testFindByAddress_City()

查找“北京”的记录

任务4、在测试类创建测试方法testFindByFamilyList_Name()

查找“唐雨涵”

完整RedisDemoApplicationTests代码

package net.lbj.lesson08;import net.lbj.lesson08.bean.Address;
import net.lbj.lesson08.bean.Family;
import net.lbj.lesson08.bean.Person;
import net.lbj.lesson08.repository.PersonRepository;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.domain.Page;
import org.springframework.data.domain.PageRequest;
import org.springframework.data.domain.Pageable;
import org.springframework.data.domain.Sort;import java.util.ArrayList;
import java.util.List;
import java.util.Optional;@SpringBootTest
class RedisDemoApplicationTests {@Autowired //注入个人仓库private PersonRepository personRepository;@Testvoid contextLoads() {}@Testpublic void testAddPerson() {// 添加第一个人Address address = new Address("中国", "泸州");Family family1 = new Family("儿子", "张晓承");Family family2 = new Family("女儿", "张晓霞");List<Family> familyList = new ArrayList<Family>();familyList.add(family1);familyList.add(family2);Person person = new Person("1", "莫言", "张", address, familyList);personRepository.save(person);// 添加第二个人address = new Address("中国", "上海");family1 = new Family("儿子", "李诚源");family2 = new Family("女儿", "李晓丽");familyList = new ArrayList<Family>();familyList.add(family1);familyList.add(family2);person = new Person("2", "承鹏", "李", address, familyList);personRepository.save(person);// 添加第三个人address = new Address("中国", "北京");family1 = new Family("儿子", "唐玉海");family2 = new Family("女儿", "唐雨涵");familyList = new ArrayList<Family>();familyList.add(family1);familyList.add(family2);person = new Person("3", "大明", "唐", address, familyList);personRepository.save(person);// 添加第四个人address = new Address("中国", "北京");family1 = new Family("儿子", "张大明");family2 = new Family("女儿", "张丽丽");familyList = new ArrayList<Family>();familyList.add(family1);familyList.add(family2);person = new Person("4", "文勇", "张", address, familyList);personRepository.save(person);System.out.println("成功地添加了4条记录~");}@Testpublic void testFindAll() {Iterable<Person> persons = personRepository.findAll();persons.forEach(person -> System.out.println(person));}@Testpublic void testFindById() {Optional<Person> person = personRepository.findById("2");System.out.println(person);}@Testpublic void testDeleteAll() {personRepository.deleteAll();System.out.println("删除成功");}@Testpublic void testFindPersonByLastName() {//排序 - 降序Sort.Direction sort = Sort.Direction.DESC;//创建分页器Pageable pageable = PageRequest.of(0, 2, sort, "id");//获取页面Page<Person> page = personRepository.findPersonByLastName("张", pageable);//输出页面内容for (Person person : page.getContent()) {System.out.println(person);}}@Testpublic void testFindByLastName() {//获取页面List<Person> persons= personRepository.findByLastName("张");//输出页面内容System.out.println(persons);}@Testpublic void testFindPersonByLastNameAndFirstName() {//获取页面List<Person> persons= personRepository.findPersonByLastNameAndFirstName("唐", "大明");//输出页面内容System.out.println(persons);}@Testpublic void testFindByAddress_City() {//获取页面List<Person> persons= personRepository.findByAddress_City("北京");//输出页面内容System.out.println(persons);}@Testpublic void testFindByFamilyList_Name() {//获取页面List<Person> persons= personRepository.findByFamilyList_Name("唐雨涵");//输出页面内容System.out.println(persons);}
}

Spring Boot基础学习08 - Spring Boot整合Redis相关推荐

  1. 【Spring源码学习】Spring Bean的销毁

    [Spring源码学习]Spring Bean的销毁 一.注册bean销毁的类 1.registerDisposableBeanIfNecessary() 2.DisposableBeanAdapte ...

  2. Spring Boot基础学习笔记08:Spring Boot整合Redis

    文章目录 零.学习目标 1.熟悉Redis相关概念 2.掌握使用Spring Boot整合Redis 一.Redis概述 1.Redis简介 2.Redis优点 (1)存取速度快 (2)数据类型丰富 ...

  3. Spring Boot基础学习笔记12:组件注册整合Servlet三大组件

    文章目录 零.学习目标 一.整合Servlet三大组件概述 (一)组件注册整合Servlet三大组件 (二)路径扫描整合Servlet三大组件 二.创建Spring Boot项目 - Integrat ...

  4. Spring Boot基础学习笔记20:Spring Security入门

    文章目录 零.学习目标 一.Spring Security (一)Spring Security概述 (二)Spring Boot整合Spring Security实现的安全管理功能 二.基础环境搭建 ...

  5. Spring Boot基础学习笔记02:Spring Boot项目单元测试、热部署与原理分析

    文章目录 零.学习目标 1.掌握Spring Boot单元测试实现 2.掌握Spring Boot热部署实现 3.熟悉Spring Boot基本原理 一.Spring Boot单元测试 (一)Spri ...

  6. Spring Boot基础学习笔记01:Spring Boot入门程序

    文章目录 零.学习目标 1.了解Spring Boot框架的优点 2.掌握使用Maven方式构建Spring Boot项目 3.掌握使用Spring Initializr方式构建Spring Boot ...

  7. SpringMVC学习08之SSM整合(三)

    回顾 上一章我们完成了Mybatis底层的编写 Spring层配置 一.spring层配置 1.配置Spring整合MyBatis,我们这里数据源使用c3p0连接池 2.编写Spring整合Mybat ...

  8. spring源码学习:spring初始化流程

    首先借个图,说明一下spring的bean的整个生命流程. 销毁什么的这个看图就知道怎么回事,使用的话一般都是纯业务,而且我们更关心spring是怎么初始化的,初始化成我们定义的那个样子.我们就是以这 ...

  9. Redis学习(含 Springboot 整合 Redis)

    Redis NoSQL (not only sql) 在现代的计算系统上每天网络上都会产生庞大的数据量. 这些数据有很大一部分是由关系数据库管理系统(RDBMS)来处理. 1970年 E.F.Codd ...

  10. Spring Boot基础学习笔记06:Spring Boot整合MyBatis

    文章目录 零.学习目标 1.了解Spring Boot数据访问概述 2.掌握使用注解的方式整合MyBatis 3.掌握使用配置文件的方式整合MyBatis 一.Spring Boot数据访问概述 二. ...

最新文章

  1. 然并卵:BF 科普 BF 解释器的 JS 实现
  2. Python基础——PyCharm版本——第八章、文件I/O(XML)
  3. 牛客练习赛76 E 牛牛数数(线性基加二分)
  4. rocksdb ubuntu c++源码编译测试
  5. 【转】Java魔法堂:String.format详解
  6. Shank的大步小步算法(Shank‘s Baby-Step-Giant-Step Algorithm)
  7. microsoft符合服务器加载符号的解决方案
  8. 理想汽车交付失误 油门踩到底速度最高30迈,李想:是我们太蠢了
  9. JDBC工具类DataSourceUtils,dao接口代码示例;
  10. 微信私人心情录小程序源码
  11. 微信多客服系统开发教程
  12. 四、音频如何从USB输入输出
  13. Windows 服务(1) (from MSDN)
  14. iOS 14.6渣优化,续航噩梦
  15. ClickHouse中文官方文档
  16. SwiftUI iOS 精品完成项目之宠物展示与领养App MVVM(教程含源码)
  17. Python对于私有化的处理
  18. 我的第一个flash作品-遮罩层-瀑布
  19. 绘制二元正态分布的密度函数图和等高线图MATLAB
  20. 华为荣耀5cvs华为v9play_荣耀畅玩7C和荣耀V9Play综合对比评测 看完这些在决定

热门文章

  1. win10 安装 hadoop 3.3.1报错 Unable to load native-hadoop library
  2. C语言:数组排序(冒泡法排序)
  3. DIM抠图网络 Deep Image Matting 论文笔记
  4. [小白slam攻略]ROVIO安装运行及保存轨迹用evo评估
  5. 视觉惯性里程计 综述 VIO Visual Inertial Odometry msckf ROVIO ssf msf okvis ORB-VINS VINS-Mono gtsam
  6. rar压缩包密码解密工具
  7. 一次spinlock死锁故障的定位(太经典,收藏!)
  8. HTML5视频和音频常见的格式,HTML5中视频音频的使用详解
  9. 英语面试自我介绍范文
  10. shortcutwebsite