一、Redis概述

1、Redis简介

Redis是一个开源(BSD许可)的、内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件,并提供多种语言的API。
Redis支持多种类型的数据结构,如 字符串(strings)、散列(hashes)、列表(lists)、集合(sets)、有序集合(sorted sets)与范围查询、bitmaps、 hyperloglogs 和 地理空间(geospatial)、索引半径查询。
Redis 内置了复制(replication),LUA脚本(Lua scripting),LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。

2、Redis优点

(1)存取速度快
Redis速度非常快,每秒可执行大约110000次的设值操作,或者执行81000次的读取操作。
(2)数据类型丰富
Redis支持开发人员常用的大多数数据类型,例如列表、集合、排序集和散列等。
(3)操作具有原子性
所有Redis操作都是原子操作,这确保如果两个客户端并发访问,Redis服务器能接收更新后的值。
(4)提供多种功能
Redis提供了多种功能特性,可用作非关系型数据库、缓存中间件、消息中间件等。
3、Redis官网与在线教程
官网:https://redis.io/
中文网站:http://www.redis.cn/
在线教程:https://www.redis.net.cn/tutorial/3502.html

二、使用Spring Boot 整合 Redis

(一)搭建Redis环境

1、下载Redis安装压缩包

下载链接:添加链接描述
提取码:j4hq

2、将Redis安装包解压到任意位置

解压到D:\redis目录

3、给Redis配置环境变量

4、启动Redis服务器

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


The server is now ready to accept connections on port 6379
服务器准备就绪,在端口6379接受连接

5、启动Redis客户端

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

创建键值对,按键获取值

键入exit命令,退出客户端

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

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

下载链接:添加链接描述
提取码:oonx

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

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

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

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

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


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

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

创建键值对

修改键值对

删除键值对

(三)创建Spring Boot项目RedisDemo

设置项目元数据

添加项目依赖

设置项目名称与保存位置

(四)创建实体类

在net.wz.lesson08包里创建bean子包

1、创建地址实体类Address

在net.wz.lesson08.bean包里创建地址实体类Address

package net.wz.lesson08.bean;import org.springframework.data.redis.core.index.Indexed;/*** 功能:地址实体类* 作者:吴钊* 日期:2021年05月17日*/
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 + '\'' +'}';}
}

注意:索引类Indexed不要导入错误 - import org.springframework.data.redis.core.index.Indexed;

2、创建家庭实体类Family

在net.wz.lesson08.bean包里创建家庭实体类Family

package net.wz.lesson08.bean;import org.springframework.data.redis.core.index.Indexed;/*** 功能:家庭实体类* 作者:吴钊* 日期:2021年05月17日*/
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

在net.wz.lesson08.bean包里创建人实体类Person

package net.wz.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;/*** 功能:人实体类* 作者:吴钊* 日期:2021年05月17日*/
@RedisHash("persons")
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 +'}';}
}

说明:注解@RedisHash(“persons”),表明在redis数据库中开启一个persons的内存空间,所有person操作相关的数据均保存在此空间(redis是内存数据库)。

(五)创建自定义Repository接口

在net.wz.lesson08包里创建repository子包
在net.wz.lesson08.repository包里创建PersonRepository接口

package net.wz.lesson08.repository;import net.wz.lesson08.bean.Person;
import org.springframework.data.repository.CrudRepository;/*** 功能:人仓库接口* 作者:吴钊* 日期:2021年05月17日*/
public interface PersonRepository extends CrudRepository<Person, String> {}

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

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

点开测试类RedisDemoApplicationTests

注入PersonRepository实例

1、创建测试方法testAddPerson()

@Testpublic void testAddPerson() {// 添加第一个人                                                                                                 Address address = new Address("中国", "泸州");Family family1 = new Family("儿子", "张晓刚");Family family2 = new Family("女儿", "张晓霞");List<Family> familyList = new ArrayList<>();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条记录~");}

说明:在这个测试方法里,测试了personRepository的save()方法

运行测试方法,查看结果

在命令行窗口启动redis服务

运行测试方法,查看结果

打开Redis可视化工具查看

2、创建测试方法testFindAll()


运行测试方法,查看结果

创建测试方法testFindById()

运行测试方法,查看结果

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

1、在PersonRepository接口定义方法

package net.wz.lesson08.repository;import net.wz.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;/*** 功能:人仓库接口* 作者:吴钊* 日期:2021年05月17日*/
public interface PersonRepository extends CrudRepository<Person, String> {//自定义个性化查询,方法名需要符合特定的规范public List<Person> findByLastName(String lastName);public Page<Person> findPersonByLastName(String lastName, Pageable pageable);public List<Person> findPersonByLastNameAndFirstName(String lastName, String firstName);List<Person> findByAddress_City(String city);List<Person> findByFamilyList_Name(String name);
}

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


运行测试方法,查看结果

Spring Boot基础学习笔记08相关推荐

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

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

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

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

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

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

  4. Spring Boot基础学习笔记25:RabbitMQ - 发布/订阅工作模式

    文章目录 零.学习目标 一.准备工作 (一)创建Spring Boot项目 - PublishSubscribeDemo (二)在应用属性文件里配置RabbitMQ 二.基于API进行消息发布和订阅 ...

  5. Spring Boot基础学习笔记23:用户自定义授权管理

    文章目录 零.学习目标 一.准备工作 (一)创建Spring Boot项目 - UserControlDemo02 (二)移植UserControlDemo01的内容到当前项目 (三)启动应用,测试效 ...

  6. Spring Boot基础学习笔记22:自定义用户控制、登录与退出

    文章目录 零.学习目标 一.准备工作 (一)创建Spring Boot项目 - UserControlDemo01 (二)移植AuthenticationDemo的内容到当前项目 (三)启动应用,测试 ...

  7. Spring Boot基础学习笔记21:自定义用户认证

    文章目录 零.学习目标 一.Spring Security认证流程图 二.准备工作 (一)创建Spring Boot项目 - AuthenticationDemo (二)移植SpringSecurit ...

  8. Spring Boot基础学习笔记19:自定义RedisTemplate与RedisCacheManager

    文章目录 零.学习目标 一.为什么要采用自定义Redis缓存序列化机制 二.自定义RedisTemplate (一)Redis API 默认序列化机制 (二)自定义RedisTemplate序列化机制 ...

  9. Spring Boot基础学习笔记18:Spring Boot整合Redis缓存实现

    文章目录 零.学习目标 一.Spring Boot支持的缓存组件 二.基于注解的Redis缓存实现 (一)安装与启动Redis (二)创建Spring Boot项目 - RedisCacheDemo0 ...

  10. Spring Boot基础学习笔记17:Spring Boot默认缓存

    文章目录 零.学习目标 一.缓存概述 (一)引入缓存管理的重要性 (二)Spring Boot的缓存管理 二.Spring Boot默认缓存 (一)数据准备 (二)创建Spring Boot项目 - ...

最新文章

  1. ACE框架解读 - 源码篇
  2. Webservice入门教程_编写手机归属地查询的webservice
  3. Abstract class虚拟类
  4. vim补全html标签,vim括号引号html标签自动补全
  5. 三种CSS样式的引用方式
  6. 斑能不能彻底去掉_用茶树精油祛痘时,千万不能做这5件事!!!
  7. 连接mysql超时时间设置多少_怎么设置数据库的连接数和连接超时时间
  8. 快速入门PyTorch(2)--如何构建一个神经网络
  9. 开源等于免费吗?用事实来说话
  10. 【Golang 接口自动化05】使用yml管理自动化用例
  11. 碰到的TypeError--记录
  12. 苹果Mac设备丢失时怎样利用激活锁保护隐私信息?
  13. 纯js浏览器h5调用摄像头扫描识别解析 条形码+二维码
  14. IDEA 2021首个大版本发布,Java开发者感动哭了(附新亮点演示)
  15. 大数据在人力资源管理当中的应用
  16. HTTP协议之chunk介绍
  17. 【物体检测快速入门系列 | 01 】基于Tensorflow2.x Object Detection API构建自定义物体检测器
  18. 电磁兼容工程(Electromagnetic compatibility engineering Herry Ott )读书笔记-- 章14 抗射频和瞬态信号干扰能力
  19. java实现srt协议,的Java API的SRT字幕
  20. ajax异步请求的代码,ajax 异步请求 代码

热门文章

  1. 写游戏老是有个问题就数学中角度换算的问题。。烦
  2. ipa包安装到苹果手机中的几种方式——Qt for IOS
  3. 第十四届教育技术与计算机国际会议新增SSCI, ESCI期刊
  4. blob:https视频下载m3u8视频在线下载
  5. ZIP RAR文件密码破解软件ARCHPR Pro4.54(绿色中文破解版)
  6. uniapp在微信公众号中获取定位得到经纬度
  7. python删除重复文件
  8. python | 秦九昭算法详细介绍
  9. ADC知识(2)——直流参数(输入电压参考,参考电流输入,积分非线性误差,差分非线性误差)
  10. mp3转wav方法,mp3转wav步骤