Redis的简单应用

Springboot整合Redis

//导入依赖 org.springframework.boot spring-boot-starter-data-redis //文件配置 spring: redis: host: 127.0.0.1 port: 6379 password: root//编写一个自己的RedisTemplate package com.shuaikb.config; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; @Configuration public class RedisConfig {@Bean public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) { RedisTemplate template = new RedisTemplate(); template.setConnectionFactory(redisConnectionFactory); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); //Jackson ObjectMapper 中的 enableDefaultTyping 方法由于安全原因,从 2.10.0 开始标记为过期,建议用 activateDefaultTyping 方法代替 //om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); //key 采用的String 的序列化方式 template.setKeySerializer(stringRedisSerializer); //hashde key 也采用String的序列化方式 template.setHashKeySerializer(stringRedisSerializer); //value 序列化方式采用jackson template.setValueSerializer(jackson2JsonRedisSerializer); //hash 的 value序列化方式采用jackson template.setHashKeySerializer(jackson2JsonRedisSerializer); //初始化配置 template.afterPropertiesSet(); return template; }}

邮件发送 【Redis的简单应用】开启邮箱服务,获得授权码
Redis的简单应用
文章图片

//导入依赖 org.springframework.boot spring-boot-starter-mail //配置文件 spring: mail: # 配置 SMTP 服务器地址 host: smtp.qq.com # 发送者邮箱 username: ***********@qq.com # 配置密码,注意不是真正的密码,而是刚刚申请到的授权码 password: ****************** # 端口号465或587 port: 465 # 默认的邮件编码为UTF-8 default-encoding: UTF-8 # 配置SSL 加密工厂 properties: mail: smtp: ssl: enable: true #表示开启 DEBUG 模式,这样,邮件发送过程的日志会在控制台打印出来,方便排查错误 debug: true//发送过程 @Autowired JavaMailSender javaMailSender; public void mali(){ // 构建一个邮件对象 SimpleMailMessage message = new SimpleMailMessage(); // 设置邮件主题 message.setSubject("这是一封测试邮件"); // 设置邮件发送者,这个跟application.yml中设置的要一致 message.setFrom("********@qq.com"); // 设置邮件接收者,可以有多个接收者,中间用逗号隔开,以下类似 message.setTo("********@qq.com"); // 设置邮件的正文 message.setText("邮件正文"); // 发送邮件 javaMailSender.send(message); System.out.println("发送成功"); }

设置时间过期验证码
@Component public class EmailSend { @Autowired JavaMailSender javaMailSender; String[] codees={"0","1","2","3","4","5","6","7","8","9"}; @Autowired RedisUtils redisUtils; public void send(String toEmail,String subject){ // 构建一个邮件对象 SimpleMailMessage message = new SimpleMailMessage(); // 设置邮件主题 message.setSubject(subject); // 设置邮件发送者,这个跟application.yml中设置的要一致 message.setFrom("********@qq.com"); // 设置邮件接收者,可以有多个接收者,中间用逗号隔开,以下类似 message.setTo(toEmail); // 设置邮件的正文 String code=""; for(int i=0; i<6; i++){ int j=(int)(Math.random()*10); code+=codees[j]; } message.setText(code); // 发送邮件 javaMailSender.send(message); redisUtils.set(toEmail,code,300); System.out.println("发送成功"); } }

    推荐阅读