乐趣区

关于java:Redis的简单应用

Springboot 整合 Redis

// 导入依赖
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

// 文件配置
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<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {RedisTemplate<String, Object> 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;
    }


}

邮件发送

开启邮箱服务,取得受权码

// 导入依赖
<dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-mail</artifactId>
</dependency>

// 配置文件
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("发送胜利");

    }
}
退出移动版