SpringBoot+Redis

本文详细介绍了在Linux环境下搭建Redis服务器的过程,包括下载、解压、编译安装及配置,并提供了SpringBoot项目中连接Linux下Redis的配置示例,以及如何在SpringBoot中进行Redis的操作。

第一次发表博客(SpringBoot+Redis环境搭建以及Linux系统下Redis的搭建)

最近因为项目需要,需要添加Redis缓存,由于之前没有自己亲手去搭建过,所以在搭建过程中遇到了不少的坑,也发现网上有关于SpringBoot+Redis的博客都是千篇一律,所以自己来总结一下,由于之前没有动手写过博客,所以对于这个格式不是太怎么会用。这篇文章之前发过一次,由于博主不会排版,导致图片不显示,贼是蛋疼,然后就删掉重新整理了一下

1.linux环境下搭建redis

首先需要从redis官网上下载redis的linux版本架包(https://redis.io/),我下载的是redis-3.2.9版本。

在linux的home文件下执行mkdir redis-tar 来新建一个文件夹来存放redis的架包(存放位置和路径可以自定义,下同)
在这里插入图片描述

执行 tar vxf redis-3.2.9.tar.gz 对架包进行解压

进入解压后的架包 cd /redis-3.2.9

执行 make 命令进行编译安装

移动redis-server、redis-cli、redis-conf、redis-benchmark 四个文件移动到 /usr/local/redis 目录下 (如若没有redis文件夹 手动创建一个 mkdir redis)命令如下:

cp redis-server /usr/local/redis
	
cp redis-cli /usr/local/redis
	
cp redis.conf /usr/local/redis
	
cp redis-benchmark /usr/local/redis

然后启动redis服务

./redis-server redis.conf

这个时候回显示redis已经搭建成功,端口号为 6379

2. Redis客户端对linxu下的redis服务进行连接

首先去下载一个redis客户端,安装好
在这里插入图片描述

打开
在这里插入图片描述
当进行测试连接的时候,几秒钟还是连接不上,那么恭喜你中奖了,说明linux上配置的redis还是有一些问题,博主当时也遇到了这个问题,从网上也找了很对,千篇一律,没有正确的 。最后还是找到了一个靠谱的,这里就不一一叙述了,直接上链接 解决客户端不能连接linux上redis服务

3.SpringBoot的配置

走到这里,那么说明你的redis安装好并且能够使用客户端进行连接了,那么下面是最重要的一步就是springcloud上连接linux下的redis了首先我们需要在springcloud的yml配置文件下对redis的链接进行配置,具体的配置如下

 redis:
     # Redis数据库索引(默认为0)
     database: 10
     # Redis服务器地址
     host: 192.168.19.129
     # Redis服务器连接端口
     port: 6379
     # 连接超时时间(毫秒)
     timeout: 5000
     # Redis服务器连接密码(默认为空)
     password:
     pool:
       # 连接池最大阻塞等待时间(使用负值表示没有限制)
       max-active: 8
       # 连接池中的最小空闲连接
       min-idle: 0
       # 连接池中的最大空闲连接
       max-idle: 8
       # 连接池最大连接数(使用负值表示没有限制)
       max-wait: -1

然后就是RedisConfig文件的配置了

package com.goobird.hivideo.redis;

import java.lang.reflect.Method;
import java.time.Duration;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;

import org.springframework.cache.CacheManager;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.cache.interceptor.KeyGenerator;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.connection.RedisConnectionFactory;

@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {

    @Bean
    public KeyGenerator KeyGenerator() {
        return new KeyGenerator() {
            @Override
            public Object generate(Object target, Method method, Object... params) {
                StringBuilder sb = new StringBuilder();
                sb.append(target.getClass().getName());
                sb.append(method.getName());
                for (Object obj : params) {
                    sb.append(obj.toString());
                }
                return sb.toString();
            }
        };
    }
    @Bean
    public CacheManager cacheManager(RedisConnectionFactory factory) {
        RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig();  // 生成一个默认配置,通过config对象即可对缓存进行自定义配置
        config = config.entryTtl(Duration.ofMinutes(1))     // 设置缓存的默认过期时间,也是使用Duration设置
                .disableCachingNullValues();     // 不缓存空值

        // 设置一个初始化的缓存空间set集合
        Set<String> cacheNames =  new HashSet<>();
        cacheNames.add("my-redis-cache1");
        cacheNames.add("my-redis-cache2");

        // 对每个缓存空间应用不同的配置
        Map<String, RedisCacheConfiguration> configMap = new HashMap<>();
        configMap.put("my-redis-cache1", config);
        configMap.put("my-redis-cache2", config.entryTtl(Duration.ofSeconds(120)));

        RedisCacheManager cacheManager = RedisCacheManager.builder(factory)     // 使用自定义的缓存配置初始化一个cacheManager
                .initialCacheNames(cacheNames)  // 注意这两句的调用顺序,一定要先调用该方法设置初始化的缓存名,再初始化相关的配置
                .withInitialCacheConfigurations(configMap)
                .build();
        return cacheManager;
    }

}


还有一点就是记得要添加redis的依赖哦

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

4.对redis进行操作

最后就是对redis进行数据操作了,博主简单的测试了一下,直接上代码

@RequestMapping("/test")
    public void test(){
        Map<Object,Object> map = new HashMap<>();
        //map.put("map","test1");
        map.put("map2","test2");
        redisTemplate.opsForHash().putAll("redisMap",map);
        String s = (String) redisTemplate.opsForHash().get("redisMap", "map2");
        /*BoundHashOperations redisMap = redisTemplate.boundHashOps("redisMap");
        Set keys = redisMap.keys();
        Iterator iterator = keys.iterator();
        while(iterator.hasNext()){
            Object next = iterator.next();
            System.out.println(next+"---"+redisMap.get(next));
        }*/
        System.out.println(s);
    }

最后输出的结果为:
在这里插入图片描述

再然后就没有然后拉,结束啦!
服务搭建的过程中,参考了两位大神意见及代码,在万分感谢!
喜欢可以点个赞,原创,转载请注明出处!!!
最后,有疑问的可以和博主私聊!

【事件触发一致性】研究多智能体网络如何通过分布式事件驱动控制实现有限时间内的共识(Matlab代码实现)内容概要:本文围绕多智能体网络中的事件触发一致性问题,研究如何通过分布式事件驱动控制实现有限时间内的共识,并提供了相应的Matlab代码实现方案。文中探讨了事件触发机制在降低通信负担、提升系统效率方面的优势,重点分析了多智能体系统在有限时间收敛的一致性控制策略,涉及系统模型构建、触发条件设计、稳定性与收敛性分析等核心技术环节。此外,文档还展示了该技术在航空航天、电力系统、机器人协同、无人机编队等多个前沿领域的潜在应用,体现了其跨学科的研究价值和工程实用性。; 适合人群:具备一定控制理论基础和Matlab编程能力的研究生、科研人员及从事自动化、智能系统、多智能体协同控制等相关领域的工程技术人员。; 使用场景及目标:①用于理解和实现多智能体系统在有限时间内达成一致的分布式控制方法;②为事件触发控制、分布式优化、协同控制等课题提供算法设计与仿真验证的技术参考;③支撑科研项目开发、学术论文复现及工程原型系统搭建; 阅读建议:建议结合文中提供的Matlab代码进行实践操作,重点关注事件触发条件的设计逻辑与系统收敛性证明之间的关系,同时可延伸至其他应用场景进行二次开发与性能优化。
【四旋翼无人机】具备螺旋桨倾斜机构的全驱动四旋翼无人机:建模与控制研究(Matlab代码、Simulink仿真实现)内容概要:本文围绕具备螺旋桨倾斜机构的全驱动四旋翼无人机展开,重点研究其动力学建模与控制系统设计。通过Matlab代码与Simulink仿真实现,详细阐述了该类无人机的运动学与动力学模型构建过程,分析了螺旋桨倾斜机构如何提升无人机的全向机动能力与姿态控制性能,并设计相应的控制策略以实现稳定飞行与精确轨迹跟踪。文中涵盖了从系统建模、控制器设计到仿真验证的完整流程,突出了全驱动结构相较于传统四旋翼在欠驱动问题上的优势。; 适合人群:具备一定控制理论基础和Matlab/Simulink使用经验的自动化、航空航天及相关专业的研究生、科研人员或无人机开发工程师。; 使用场景及目标:①学习全驱动四旋翼无人机的动力学建模方法;②掌握基于Matlab/Simulink的无人机控制系统设计与仿真技术;③深入理解螺旋桨倾斜机构对飞行性能的影响及其控制实现;④为相关课题研究或工程开发提供可复现的技术参考与代码支持。; 阅读建议:建议读者结合提供的Matlab代码与Simulink模型,逐步跟进文档中的建模与控制设计步骤,动手实践仿真过程,以加深对全驱动无人机控制原理的理解,并可根据实际需求对模型与控制器进行修改与优化。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值