七天玩转Redis | 打卡第6天 SpringBoot集成Redis
七天玩转Redis
The xixth day---------SpringBoot集成Redis
目录
The xixth day---------SpringBoot集成Redis
一、SpringBoot集成Redis
1.导入jar包
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
2.编写yml配置文件
springboot的配置文件有两种,一种是application.propertis,另一种是application,yml。两种配置文件的作用是一样的,但是yml文件的可读性相对来说更强一点。
##redis配置信息
spring:
redis:
database: 0 #redis数据库索引,默认为0
host: 127.0.0.1 #redis服务器地址
port: 6379 #redis服务器连接端口
password: #redis服务器连接密码,默认为null
timeout: 5000 #redis连接超时时间
# ******** 如果不使用连接池,那么下面这部分可省略不写 ********
jedis:
pool: #连接池配置
max-active: 8 #连接池最大连接数
max-wait: -1 #连接池最大阻塞等待时间
max-idle: 8 #连接池中的最大空闲连接数
min-idle: 0 #连接池中的最小空闲连接数
我们以操作RedisTemplate工具类为例,在类中如果想要使用RedisTemplate工具类,需要将其加上@Autowired注解,将其自动注入。否则RedisTemplate就不会根据我们配置文件中的Redis参数连接到Redis!
@SpringBootTest
class SpringbootredisApplicationTests {
@Autowired
private StringRedisTemplate stringRedisTemplate;
@Autowired
private RedisTemplate redisTemplate;
/**
* 使用redisTemplate操作
*/
@Test
public void redisTest07() {
System.out.println("redisTemplate集成测试");
redisTemplate.opsForValue().set("姓名","灰小猿");
System.out.println("获取到的姓名:" + redisTemplate.opsForValue().get("姓名"));
// 数据库操作
RedisConnection connection = redisTemplate.getConnectionFactory().getConnection();
// 清空当前数据库
// connection.flushDb();
// 清空所有数据库
// connection.flushAll();
}
}
二、自定义RedisTemplate
1.原始序列化方式测试
建一个User类
@AllArgsConstructor
@NoArgsConstructor
@Data
public class User implements Serializable {
private String name;
private int age;
}
使用redisTemplate类来输入一个user类型的键值对,并获取输入的值:
@Autowired
private RedisTemplate redisTemplate;
@Test
public void redisTest08() {
User user = new User("灰小猿", 5);
redisTemplate.opsForValue().set("user", user);
System.out.println("获取到的数值:");
System.out.println(redisTemplate.opsForValue().get("user"));
}
note:JSON 语法格式简单、层次结构清晰、并且在数据交换方面,JSON 所使用的字符要比 XML 少得多,可以大大得节约传输数据所占用的带宽
三.自定义redisTemplate的方法
自定义redisTemplate的方法是:新建一个配置类RedisConfig,在其中注入一个Bean,并实现自定义的序列化方法。完整的自定义配置类如下:这个一般是企业开发的固定模板,作用是将Redis默认的序列化方式改为JSON的方式。
/**
* 自定义redisTemplate
* 解决实现序列化
*
* @author YunGang.Guo
* @date 2021/12/27 14:45
**/
@Configuration
public class RedisConfig {
/**
* 编写自己的redisTemplate
*
* @param factory
* @return
*/
@Bean("redisTemplate")
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
// 为了开发方便,一般都使用<String, Object>类型
RedisTemplate<String, Object> template = new RedisTemplate();
// 连接工厂
template.setConnectionFactory(factory);
// 序列化配置
FastJsonRedisSerializer fastJsonRedisSerializer = new FastJsonRedisSerializer(Object.class);
// value值的序列化采用FastJsonRedisSerializer
template.setValueSerializer(fastJsonRedisSerializer);
// hash值的序列化采用FastJsonRedisSerializer的方式
template.setHashValueSerializer(fastJsonRedisSerializer);
// key的序列化采用StringRedisSerializer
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
template.setKeySerializer(stringRedisSerializer);
// hash的key的序列化采用StringRedisSerializer的方式
template.setHashKeySerializer(stringRedisSerializer);
return template;
}
}
测试方法
@Autowired
private RedisTemplate redisTemplate;
@Test
public void redisTest08() {
User user = new User("灰小猿", 5);
redisTemplate.opsForValue().set("user", user);
System.out.println("获取到的数值:");
System.out.println(redisTemplate.opsForValue().get("user"));
}
三、Redis配置文件详解
- redis.windows.conf 客户端配置文件
- redis.windows-service.conf 服务器配置文件
1.NETWORK 网络部分
这部分主要是配置Redis连接的,从配置文件中就可以看出Redis使用的是TCP协议进行连接
################################## NETWORK #####################################
# 连接的ip地址
bind 127.0.0.1
# 保护模式
protected-mode yes
# 端口设置
port 6379
# TCP连接配置,连接数
tcp-backlog 511
# TCP连接超时时间
timeout 0
# TCP保持连接时间
tcp-keepalive 300
2.GENERAL 通用配置
通用配置部分主要配置日志信息,如果想要修改Redis操作日志,可以在这一部分修改。
################################# GENERAL 通用配置 #####################################
# 日志配置
loglevel notice
# 生成的日志文件名
logfile ""
# 默认的数据库配置 默认16个数据库
databases 16
# 是否显示logo
always-show-logo yes
3.SNAPSHOTTING 快照
这部分主要是做持久化的,定义数据多久保存一次,以及保存的一些配置、
################################ SNAPSHOTTING 快照 ################################
# 在规定时间内执行了多少次操作,则会持久化到文件
# 如果900秒内,至少有1个key进行了修改,就进行持久化操作,下面含义一样
save 900 1
save 300 10
save 60 10000
# 持久化出错后是否继续工作
stop-writes-on-bgsave-error yes
# 是否压缩rdb文件,压缩会消耗cpu资源
rdbcompression yes
# 保存rbd文件时,是否校验rdb文件
rdbchecksum yes
# db文件名
dbfilename dump.rdb
# rdb文件的保存目录
dir ./
4.SECURITY 安全配置
安全部分主要是用于设置Redis的访问密码。设置密码之后,使用Redis之前就需要输入密码了,默认是没有密码的。一般也不建议设置。
################################## SECURITY 安全 ###################################
# 设置密码 requirepass 123456
# requirepass foobared
5.CLIENTS 客户端限制
主要参数是配置服务器能够连接的最大客户端数量
################################### CLIENTS 客户端限制####################################
# 最大连接客户端数
# maxclients 10000
6.MEMORY MANAGEMENT 内存管理
这部分主要是配置Redis的最大内存,以及在内存满的情况下,做出怎样的清除策略,Redis默认是不清除,六大清除策略分别是:
- volatile-lru:只对设置了过期时间的key进行LRU(默认值)
- allkeys-lru:删除LRU算法的key
- volatile-random:随机删除即将过期的key
- allkeys-random:随机删除
- volatile-ttl:删除即将过期的
- noeviction:永不过期,返回错误
相关推荐
超扭滑模与快速终端滑模的永磁同步电机无感控制:理论、离散化实现与仿真研究(Simulink仿真实现)
内容概要:本文聚焦于超扭滑模控制(STSMC)与快速终端滑模控制(FTSMC)在永磁同步电机(PMSM)无位置传感器控制中的应用,系统地开展了理论分析、离散化实现与Simulink仿真实验研究。重点探讨了这两种高阶滑模控制策略在零低速工况下的控制性能,通过设计基于磁链观测器的无感估计算法,实现了对电机转子位置与速度的精确估计,有效规避了传统机械传感器带来的成本增加与可靠性下降问题。文中详尽阐述了控制算法的数学建模与推导过程,并针对数字控制系统的特点进行了严谨的离散化处理,最终在Simulink环境中搭建了完整的电机控制仿真模型,通过对比实验全面评估了不同控制策略在动态响应速度、抗外部干扰能力和稳态控制精度等方面的综合性能。; 适合人群:具备自动控制理论、电机驱动原理等专业知识,并熟悉MATLAB/Simulink仿真环境操作的电气工程、自动化等相关领域的研究生、科研人员及工程技术人员。; 使用场景及目标:①深入研究超扭滑模与快速终端滑模等高阶滑模控制理论在高性能电机驱动系统中的具体应用与实现方法;②掌握永磁同步电机在零低速段无位置传感器控制的核心算法,特别是基于磁链观测的转子状态估算技术;③学习如何将连续域的先进控制理论转化为适用于实际数字控制器的离散化算法,并完成从理论到仿真的完整闭环验证。; 阅读建议:此文理论深度与实践操作紧密结合,读者应重点关注控制算法的设计思想、离散化实现的关键步骤以及Simulink仿真模型的构建细节,建议在阅读过程中动手复现仿真模型,通过调整控制器参数来深入理解各模块的功能作用及系统整体的动静态性能表现。
政府如何精准掌握园区企业创新能力,以制定更有效的科技政策?.docx
政府如何精准掌握园区企业创新能力,以制定更有效的科技政策?
旋转高频信号注入法在PMSM零低速无位置控制中的仿真研究(Matlab代码实现)
内容概要:本文围绕旋转高频信号注入法在永磁同步电机(PMSM)零低速无位置传感器控制中的应用展开深入的仿真研究,基于Matlab/Simulink平台构建完整的控制系统模型,系统阐述了高频信号注入法的理论基础、转子位置观测机制及整体控制策略设计。重点探讨了在零低速运行工况下,通过注入旋转高频电压信号并结合先进的信号处理技术(如带通滤波、坐标变换、锁相环等)有效提取转子位置信息的技术路径,成功克服了传统反电动势法在极低速时信号微弱、无法准确观测的固有缺陷。研究详细分析了高频响应信号的调制解调过程、位置估算环路的动态特性,并考察了电机参数漂移、外部干扰等因素对系统鲁棒性与估计精度的影响,通过大量仿真实验验证了该方法在提升位置观测准确性、增强系统抗干扰能力方面的显著优势。; 适合人群:具备电机控制、电力电子及自动控制理论基础,熟悉Matlab/Simulink仿真环境,从事PMSM驱动系统开发或无位置传感器控制算法研究的研发人员,特别适合电气工程、自动化等相关专业的研究生及具有1-5年工作经验的工程师。; 使用场景及目标:①深入掌握旋转高频信号注入法在PMSM无感控制中的实现原理、关键技术环节与工程实现难点;②学习并实践基于Matlab/Simulink的先进电机控制算法仿真建模、信号处理与性能分析方法;③为解决实际工程中电机在零速启动、低速精确控制等场景下的位置传感器依赖问题,提供有效的技术方案参考与系统的仿真验证手段。; 阅读建议:此资源以Matlab代码实现为核心载体,建议读者在学习过程中紧密结合提供的文档说明与仿真模型,逐模块剖析高频信号发生器、注入策略、响应信号解调、位置估算器等关键环节的设计原理,通过修改系统参数、设置不同工况进行仿真实验,深入理解算法内部机理与系统动态响应特性之间的关联。
【高速串行通信】基于S参数去嵌与信道劣化建模的PCIe链路表征:物理层测试中发射机与接收机性能验证方法研究
内容概要:本文围绕PCI Express通道在信道退化情况下的表征方法展开,重点介绍了物理层测试中的关键技术与流程。文章详细阐述了如何通过S参数提取和去嵌入(de-embedding)技术,将测量结果还原至发送端或接收端引脚,以准确评估信号完整性;同时探讨了合规性通道的嵌入、接收端均衡(如CTLE/DFE)对闭合眼图的恢复效果,以及如何生成带有预加重、去加重、抖动损伤和信道仿真的接收端测试信号。此外,还分析了短通道实例的测试结果,并强调高质量PCB设计和S参数数据对去嵌入精度的重要性。; 适合人群:从事高速接口设计、信号完整性分析或PCIe相关芯片开发的工程师,具备一定电磁场理论和高速数字电路基础的研发人员; 使用场景及目标:①用于精确表征PCIe链路在真实信道退化条件下的性能表现;②支持接收端容限测试与合规性验证,提升系统鲁棒性; 阅读建议:本资料适用于需要深入理解PCIe物理层测试机制的技术人员,建议结合实际测试工具(如示波器、通道仿真软件)进行实践操作,重点关注S参数获取、去嵌入设置及均衡后信号分析等关键步骤。
MATLAB实现了可移动天线,实现了ISCC的总速率优化。.zip
1.版本:matlab2014a/2019b/2024b 2.附赠案例数据可直接运行。 3.代码特点:参数化编程、参数可方便更改、代码编程思路清晰、注释明细。 4.适用对象:计算机,电子信息工程、数学等专业的大学生课程设计、期末大作业和毕业设计。


