Spring Boot基础学习笔记08
一、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相关推荐
- Spring Boot基础学习笔记08:Spring Boot整合Redis
文章目录 零.学习目标 1.熟悉Redis相关概念 2.掌握使用Spring Boot整合Redis 一.Redis概述 1.Redis简介 2.Redis优点 (1)存取速度快 (2)数据类型丰富 ...
- Spring Boot基础学习笔记20:Spring Security入门
文章目录 零.学习目标 一.Spring Security (一)Spring Security概述 (二)Spring Boot整合Spring Security实现的安全管理功能 二.基础环境搭建 ...
- Spring Boot基础学习笔记06:Spring Boot整合MyBatis
文章目录 零.学习目标 1.了解Spring Boot数据访问概述 2.掌握使用注解的方式整合MyBatis 3.掌握使用配置文件的方式整合MyBatis 一.Spring Boot数据访问概述 二. ...
- Spring Boot基础学习笔记25:RabbitMQ - 发布/订阅工作模式
文章目录 零.学习目标 一.准备工作 (一)创建Spring Boot项目 - PublishSubscribeDemo (二)在应用属性文件里配置RabbitMQ 二.基于API进行消息发布和订阅 ...
- Spring Boot基础学习笔记23:用户自定义授权管理
文章目录 零.学习目标 一.准备工作 (一)创建Spring Boot项目 - UserControlDemo02 (二)移植UserControlDemo01的内容到当前项目 (三)启动应用,测试效 ...
- Spring Boot基础学习笔记22:自定义用户控制、登录与退出
文章目录 零.学习目标 一.准备工作 (一)创建Spring Boot项目 - UserControlDemo01 (二)移植AuthenticationDemo的内容到当前项目 (三)启动应用,测试 ...
- Spring Boot基础学习笔记21:自定义用户认证
文章目录 零.学习目标 一.Spring Security认证流程图 二.准备工作 (一)创建Spring Boot项目 - AuthenticationDemo (二)移植SpringSecurit ...
- Spring Boot基础学习笔记19:自定义RedisTemplate与RedisCacheManager
文章目录 零.学习目标 一.为什么要采用自定义Redis缓存序列化机制 二.自定义RedisTemplate (一)Redis API 默认序列化机制 (二)自定义RedisTemplate序列化机制 ...
- Spring Boot基础学习笔记18:Spring Boot整合Redis缓存实现
文章目录 零.学习目标 一.Spring Boot支持的缓存组件 二.基于注解的Redis缓存实现 (一)安装与启动Redis (二)创建Spring Boot项目 - RedisCacheDemo0 ...
- Spring Boot基础学习笔记17:Spring Boot默认缓存
文章目录 零.学习目标 一.缓存概述 (一)引入缓存管理的重要性 (二)Spring Boot的缓存管理 二.Spring Boot默认缓存 (一)数据准备 (二)创建Spring Boot项目 - ...
最新文章
- ACE框架解读 - 源码篇
- Webservice入门教程_编写手机归属地查询的webservice
- Abstract class虚拟类
- vim补全html标签,vim括号引号html标签自动补全
- 三种CSS样式的引用方式
- 斑能不能彻底去掉_用茶树精油祛痘时,千万不能做这5件事!!!
- 连接mysql超时时间设置多少_怎么设置数据库的连接数和连接超时时间
- 快速入门PyTorch(2)--如何构建一个神经网络
- 开源等于免费吗?用事实来说话
- 【Golang 接口自动化05】使用yml管理自动化用例
- 碰到的TypeError--记录
- 苹果Mac设备丢失时怎样利用激活锁保护隐私信息?
- 纯js浏览器h5调用摄像头扫描识别解析 条形码+二维码
- IDEA 2021首个大版本发布,Java开发者感动哭了(附新亮点演示)
- 大数据在人力资源管理当中的应用
- HTTP协议之chunk介绍
- 【物体检测快速入门系列 | 01 】基于Tensorflow2.x Object Detection API构建自定义物体检测器
- 电磁兼容工程(Electromagnetic compatibility engineering Herry Ott )读书笔记-- 章14 抗射频和瞬态信号干扰能力
- java实现srt协议,的Java API的SRT字幕
- ajax异步请求的代码,ajax 异步请求 代码