redis实战_SpringBoot实战(四):整合Redis

【前言】

最近自己在整理过去搭建过的框架,将用到的各个组件进行了梳理并融入自己新建的项目中(https://github.com/dangnianchuntian/springboot),一是对过去项目的整理;二是在整理的过程中查漏补缺;三是以后可以拿过去就用;

【整合Redis实战】

一、Pom中引入相应的Jar包

org.springframework.boot       spring-boot-starter-data-redisredis.clients       jedis       2.9.0

二、重要代码展示

1、读取配置文件中配置连接Redis属性值

package com.zhanghan.zhboot.properties;import lombok.Data;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.stereotype.Component;@Component@Data@ConfigurationPropertiespublic class RedisProperties {    @Value("${spring.redis.database}")    private int database;    @Value("${spring.redis.host}")    private String host;    @Value("${spring.redis.port}")    private int port;    @Value("${spring.redis.password}")    private String password;    @Value("${spring.redis.pool.max-idle}")    private int maxIdle;    @Value("${spring.redis.pool.min-idle}")    private int minIdle;    @Value("${spring.redis.pool.max-active}")    private int maxActive;    @Value("${spring.redis.pool.max-wait}")    private int maxWait;    @Value("${spring.redis.timeout}")    private int timeout;}   

2、创建相应的Redis操作template

package com.zhanghan.zhboot.config;import com.zhanghan.zhboot.properties.RedisProperties;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.cache.annotation.CachingConfigurerSupport;import org.springframework.cache.annotation.EnableCaching;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.context.support.PropertySourcesPlaceholderConfigurer;import org.springframework.data.redis.connection.RedisPassword;import org.springframework.data.redis.connection.RedisStandaloneConfiguration;import org.springframework.data.redis.connection.jedis.JedisClientConfiguration;import org.springframework.data.redis.connection.jedis.JedisConnectionFactory;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.serializer.GenericToStringSerializer;import org.springframework.data.redis.serializer.StringRedisSerializer;import redis.clients.jedis.JedisPoolConfig;@Configuration@EnableCachingpublic class RedisConfig extends CachingConfigurerSupport {    @Autowired    private RedisProperties redisProperties;    @Bean    public JedisConnectionFactory jedisConnectionFactory() {        RedisStandaloneConfiguration rf = new RedisStandaloneConfiguration();        rf.setDatabase(redisProperties.getDatabase());        rf.setHostName(redisProperties.getHost());        rf.setPort(redisProperties.getPort());        rf.setPassword(RedisPassword.of(redisProperties.getPassword()));        JedisClientConfiguration.JedisPoolingClientConfigurationBuilder jpb =                (JedisClientConfiguration.JedisPoolingClientConfigurationBuilder) JedisClientConfiguration.builder();        JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();        jedisPoolConfig.setMaxIdle(redisProperties.getMaxIdle());        jedisPoolConfig.setMinIdle(redisProperties.getMinIdle());        jedisPoolConfig.setMaxTotal(redisProperties.getMaxActive());        jedisPoolConfig.setMaxWaitMillis(redisProperties.getMaxWait());        jedisPoolConfig.setEvictorShutdownTimeoutMillis(redisProperties.getTimeout());        jpb.poolConfig(jedisPoolConfig);        JedisConnectionFactory jedisConnectionFactory = new JedisConnectionFactory(rf, jpb.build());        return jedisConnectionFactory;    }    @Bean    public static PropertySourcesPlaceholderConfigurer propertySourcesPlaceholderConfigurer() {        return new PropertySourcesPlaceholderConfigurer();    }    @Bean    RedisTemplate redisTemplate() {        RedisTemplate redisTemplate = new RedisTemplate<>();        redisTemplate.setConnectionFactory(jedisConnectionFactory());        return redisTemplate;    }    @Bean    RedisTemplate strRedisTemplate() {        final RedisTemplate template = new RedisTemplate<>();        template.setConnectionFactory(jedisConnectionFactory());        template.setKeySerializer(new StringRedisSerializer());        template.setHashValueSerializer(new GenericToStringSerializer<>(String.class));        template.setValueSerializer(new GenericToStringSerializer<>(String.class));        return template;    }    @Bean    RedisTemplate longRedisTemplate() {        final RedisTemplate template = new RedisTemplate<>();        template.setConnectionFactory(jedisConnectionFactory());        template.setKeySerializer(new StringRedisSerializer());        template.setHashValueSerializer(new GenericToStringSerializer<>(Long.class));        template.setValueSerializer(new GenericToStringSerializer<>(Long.class));        return template;    }    @Bean    RedisTemplate booleanRedisTemplate() {        final RedisTemplate template = new RedisTemplate<>();        template.setConnectionFactory(jedisConnectionFactory());        template.setKeySerializer(new StringRedisSerializer());        template.setHashValueSerializer(new GenericToStringSerializer<>(Boolean.class));        template.setValueSerializer(new GenericToStringSerializer<>(Boolean.class));        return template;    }}

3、使用相应的RedisTemplate演示

package com.zhanghan.zhboot.controller;import com.mysql.jdbc.StringUtils;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.util.ObjectUtils;import org.springframework.web.bind.annotation.RequestMapping;import org.springframework.web.bind.annotation.RequestMethod;import org.springframework.web.bind.annotation.RestController;import java.util.HashMap;import java.util.Map;@RestControllerpublic class RedisController {    @Autowired    private RedisTemplate strRedisTemplate;    @Autowired    private RedisTemplate longRedisTemplate;    @Autowired    private RedisTemplate booleanRedisTemplate;    @RequestMapping(value = "/get/redis", method = RequestMethod.GET)    public Map xmlAnalysis() {        String strRedisKey = "zh:boot:String";        String longRedisKey = "zh:boot:long";        String booleanRedisKey = "zh:boot:bollean";        String strRedisValue = strRedisTemplate.opsForValue().get(strRedisKey);        if (StringUtils.isNullOrEmpty(strRedisValue)) {            strRedisTemplate.opsForValue().set(strRedisKey, "张晗");        }        Long longRedisValue = longRedisTemplate.opsForValue().get(longRedisKey);        if (ObjectUtils.isEmpty(longRedisValue)) {            longRedisTemplate.opsForValue().set(longRedisKey, 1L);        }        Boolean booleanRedisValue = booleanRedisTemplate.opsForValue().get(booleanRedisKey);        if (ObjectUtils.isEmpty(booleanRedisValue)) {            booleanRedisTemplate.opsForValue().set(booleanRedisKey, true);        }        strRedisValue = strRedisTemplate.opsForValue().get(strRedisKey);        longRedisValue = longRedisTemplate.opsForValue().get(longRedisKey);        booleanRedisValue = booleanRedisTemplate.opsForValue().get(booleanRedisKey);        Map result = new HashMap();        result.put(strRedisKey, strRedisValue);        result.put(longRedisKey, longRedisValue);        result.put(booleanRedisKey, booleanRedisValue);        return result;    }}

三、效果展示

d1c80b60f3d5452cbfe45fa613853e5d

四、项目地址及代码版本

1、地址:https://github.com/dangnianchuntian/springboot

2、代码版本:1.0.0-Release

【总结】

1、总结,提炼,查漏补缺;

2、要有前瞻性。

基于STM32F407,使用DFS算法实现最短迷宫路径检索,分为三种模式:1.DEBUG模式,2. 训练模式,3. 主程序模式 ,DEBUG模式主要分析bug,测量必要数据,训练模式用于DFS算法训练最短路径,并将最短路径以链表形式存储Flash, 主程序模式从Flash中….zip项目工程资源经过严格测试可直接运行成功且功能正常的情况才上传,可轻松复刻,拿到资料包后可轻松复现出一样的项目,本人系统开发经验充足(全领域),有任何使用问题欢迎随时与我联系,我会及时为您解惑,提供帮助。 【资源内容】:包含完整源码+工程文件+说明(如有)等。答辩评审平均分达到96分,放心下载使用!可轻松复现,设计报告也可借鉴此项目,该资源内项目代码都经过测试运行成功,功能ok的情况下才上传的。 【提供帮助】:有任何使用问题欢迎随时与我联系,我会及时解答解惑,提供帮助 【附带帮助】:若还需要相关开发工具、学习资料等,我会提供帮助,提供资料,鼓励学习进步 【项目价值】:可用在相关项目设计中,皆可应用在项目、毕业设计、课程设计、期末/期中/大作业、工程实训、大创等学科竞赛比赛、初期项目立项、学习/练手等方面,可借鉴此优质项目实现复刻,设计报告也可借鉴此项目,也可基于此项目来扩展开发出更多功能 下载后请首先打开README文件(如有),项目工程可直接复现复刻,如果基础还行,也可在此程序基础上进行修改,以实现其它功能。供开源学习/技术交流/学习参考,勿用于商业用途。质量优质,放心下载使用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值