七天玩转Redis | 打卡第6天 SpringBoot集成Redis

flyfood flyfood 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区

七天玩转Redis   

The xixth day---------SpringBoot集成Redis

目录

七天玩转Redis   

The xixth day---------SpringBoot集成Redis

一、SpringBoot集成Redis

1.导入jar包

 2.编写yml配置文件

二、自定义RedisTemplate 

三.自定义redisTemplate的方法

三、Redis配置文件详解 

1.NETWORK 网络部分

2.GENERAL 通用配置

3.SNAPSHOTTING 快照

4.SECURITY 安全配置

5.CLIENTS 客户端限制

6.MEMORY MANAGEMENT 内存管理

 


一、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默认是不清除,六大清除策略分别是:

  1. volatile-lru:只对设置了过期时间的key进行LRU(默认值)
  2. allkeys-lru:删除LRU算法的key
  3. volatile-random:随机删除即将过期的key
  4. allkeys-random:随机删除
  5. volatile-ttl:删除即将过期的
  6. noeviction:永不过期,返回错误
     

 

 

...全文

相关推荐

基于MPC+二自由度动力学的车辆轨迹跟踪+横向控制Carsim和Simulink联合仿真(Matlab代码、Simulink仿真实现)

内容概要:本文系统阐述了基于模型预测控制(MPC)与二自由度车辆动力学模型的轨迹跟踪与横向控制方法,通过Carsim与Simulink联合仿真平台实现了Matlab代码与Simulink模型的协同验证。该方法结合MPC算法的滚动时域优化特性与车辆二自由度动力学模型的运动学精度,构建了高精度的路径跟踪控制系统,能够有效提升自动驾驶车辆在复杂工况下的行驶稳定性与轨迹跟随精度。文中详细介绍了控制策略设计、车辆动力学建模、仿真参数配置、联合仿真接口搭建及结果分析全过程,涵盖了状态预测、代价函数构建、约束处理与优化求解等核心环节,适用于智能驾驶中路径规划与跟踪控制系统的研发与验证。; 适合人群:具备车辆动力学、现代控制理论(如最优控制、预测控制)基础知识,熟练掌握Matlab/Simulink与Carsim仿真工具,从事自动驾驶、智能车辆控制算法开发的研究生、科研人员及工程技术人员。; 使用场景及目标:①用于智能网联汽车与无人驾驶系统中横向控制算法的设计与性能验证;②作为MPC在车辆运动控制中应用的教学案例,辅助高校课程实践与科研训练;③支撑高水平学术论文复现、课题申报与工程原型开发。; 阅读建议:建议读者在Carsim与Simulink联合仿真环境下动手复现,重点掌握MPC控制器中预测模型的建立、权重系数调节、约束设定及实时性优化等关键技术,并尝试在不同道路曲率、车速及路面附着条件下进行鲁棒性测试,进一步拓展至非线性MPC或自适应MPC等先进控制策略的研究。

荔枝科研社

基于线性时变模型预测控制的车辆轨迹跟踪系统研究(Matlab代码、Simulink仿真实现)

内容概要:本文系统研究了基于线性时变模型预测控制(LTV-MPC)的车辆轨迹跟踪系统,利用Matlab与Simulink工具搭建完整的控制系统仿真模型。研究首先建立车辆动力学模型,并通过局部线性化方法将非线性系统转化为时变状态空间模型,进而构建包含状态预测、滚动优化与反馈校正的MPC控制框架。文中详细阐述了目标函数设计、约束条件处理(如输入饱和、状态边界)、预测时域与控制时域设定等关键技术环节,重点分析LTV-MPC在不同行驶工况下对参考轨迹的跟踪精度、稳定性和实时性表现。通过与传统线性MPC的对比仿真,验证了LTV-MPC在应对系统非线性、提升轨迹跟踪性能方面的显著优势,充分展现了其在自动驾驶路径跟踪中的工程应用价值。; 适合人群:具备自动控制理论、车辆动力学及优化算法基础,熟练掌握Matlab/Simulink编程环境,从事智能驾驶决策控制、路径规划、先进驾驶辅助系统(ADAS)研发的科研人员、工程技术人员及研究生。; 使用场景及目标:①掌握车辆轨迹跟踪中MPC控制器的设计与实现方法;②学习如何将非线性车辆模型在线线性化并集成到预测控制框架中;③深入理解LTV-MPC相较于固定参数MPC的性能优势与适用边界;④通过仿真调试优化权重矩阵、预测时域等关键参数,提升实际控制效果;⑤为自动驾驶系统的控制模块开发、学术论文撰写或毕业课题提供可复现的技术方案与仿真平台。; 阅读建议:建议读者结合所提供的Matlab代码与Simulink模型,逐步运行并剖析各功能模块,重点关注车辆模型线性化过程、状态预测模块构建、QP求解器配置及约束处理机制,通过调整工况和控制参数进行对比实验,深入掌握LTV-MPC的调控机理与性能优化方法。

程序猿鑫

基于扩展卡尔曼滤波(EKF)的激光雷达与雷达异构传感器融合算法研究(Matlab代码实现)

内容概要:本文系统性解读了一套完整的多机器人路径规划(MAPF)MATLAB代码库,聚焦于优先级规划算法的工程实现,提出将求解过程划分为几何解析、拓扑建模、调度优化与可视化呈现四个解耦层次的模块化框架。文章深入阐述了动态边权膨胀、节点预留历史、几何惩罚驱动的局部同步机制、Petri网双阶段优化以及双坐标系统可视化等核心技术设计,实现了空间路径规划与时间冲突消解的有效分离,在保障多项式时间复杂度的前提下显著提升了路径规划的成功率与计算效率。该框架不仅具备良好的可复现性和工程扩展性,还为MAPF领域的算法研究、性能评估与教学实践提供了系统化的参考范例。; 适合人群:具备一定MATLAB编程基础,从事机器人路径规划、智能交通、自动化控制、多智能体系统等相关领域的科研人员、工程技术人员及研究生。; 使用场景及目标:① 深入理解并复现多智能体路径规划中优先级规划与冲突消解的核心机制;② 学习如何将复杂的MAPF问题分解为几何、拓扑、调度与呈现的模块化工程实现方法;③ 借鉴动态边权惩罚、Petri网建模、局部同步优化等创新设计思路,以提升自身路径规划算法的鲁棒性与效率。; 阅读建议:建议读者结合文中提供的MATLAB代码与MovingAI标准地图数据集,严格按照章节顺序逐步实现各模块功能,并通过内置的动画演示工具直观观察算法执行过程,重点关注各模块间的接口设计、关键参数(如惩罚权重、同步阈值)的调优策略及其对整体性能的影响。

稷下科研社

【脉冲多普勒雷达信号处理】基于匹配滤波与慢时间傅里叶变换的距离速度联合估计理论及模糊特性研究(Matlab代码实现)

内容概要:本文系统性解读了一套完整的多机器人路径规划(MAPF)MATLAB代码库,重点围绕优先级规划算法展开,提出将求解过程划分为几何、拓扑、调度与呈现四个解耦层次的框架设计。该框架采用动态边权膨胀策略提升路径灵活性,利用节点预留历史实现高效冲突查询,并通过几何惩罚驱动的局部同步机制优化时间消解效率。此外,代码库还引入Petri网整数规划作为对比路径,支持双坐标系统与全流程可视化,具备良好的可复现性与可扩展性,适用于教学与科研参考。; 适合人群:具备一定MATLAB编程基础,从事机器人路径规划、智能调度或自动化系统研究的科研人员及研究生。; 使用场景及目标:①学习多机器人路径规划中优先级规划的核心思想与工程实现;②掌握动态边权膨胀、时间同步与冲突消解等关键技术的设计逻辑;③复现并改进现有算法,用于仓储物流、无人机编队等实际应用场景的研究与仿真验证。; 阅读建议:建议按文中所述的数据流顺序逐步阅读各模块内容,重点关注各层之间的接口设计与信息传递机制,结合提供的可视化工具调试与观察算法行为,以深入理解框架的整体架构与关键创新点。

荔枝科研社

2026 年MathorCup 数学应用挑战赛A题-啤酒酿造化合物分析与啤酒风味预测

内容概要:本文档是2026年MathorCup数学应用挑战赛A题“啤酒酿造化合物分析与啤酒风味预测”的相关资料汇总,聚焦于啤酒酿造过程中关键化学成分的识别及其对最终风味的影响,开展系统的数据分析与建模研究。文档虽未提供完整解题过程,但通过列举多源数据融合、信号处理、机器学习预测模型等多种技术方法与仿真案例,揭示了该问题潜在的解决路径,涵盖化合物数据的预处理与特征提取、关键风味物质的关联性挖掘,以及基于先进算法的风味预测模型构建等内容,体现了从化学成分到感官体验的跨学科研究范式。; 适合人群:具备数据分析、统计建模或机器学习基础知识,对食品科学、生物工程、化学工程等领域有浓厚兴趣,且有意参与数学建模竞赛的本科生、研究生及科研人员。; 使用场景及目标:①应用于数学建模竞赛,对啤酒酿造工艺中的化学成分与感官评价数据进行关联性分析;②构建从原料及发酵产物到成品啤酒风味的量化预测模型,旨在实现风味的精准评估与酿造工艺的科学优化。; 阅读建议:此资源侧重于提供解题思路与技术工具的指引,使用者应结合比赛提供的具体数据集,参考文档中提及的算法(如PCA、PLS回归、随机森林、神经网络等)进行模型的构建、训练与验证,并重点关注数据清洗、特征工程、模型选择及可解释性分析等关键环节。

然哥依旧
评论
收藏 已收藏
分享
返回顶部