微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

SpringBoot集成redis

文章主要是为自己记录在项目中用到的技术,技术小白,若有不对的地方请多多指教)

一、Window环境下安装redis

1. 首先去官网下载Redis的安装包,官方下载地址(复制链接打开新的标签进去):

https://github.com/tporadowski/redis/releases

网上找的免费redis可视化工具,百度网盘下载地址(复制链接打开新的标签进去):

http://pan.baidu.com/s/1kU8sY3P

2. 解压后找到文件夹直接打开redis-server.exe即可(注意窗口不要关闭关闭后服务停止)

 二、使用lettuce连接池连接Redis并且实现

SpringBoot 2.x 已经整合了lettuce连接池

 1. 直接在在application.yml文件配置,如下:

spring: 
  redis:
    database: 0 #redis数据库索引,认为0
    host: 192.168.1.168 #redis服务器地址
    port: 6379 #redis服务器连接端口
    password: #redis服务器连接密码认为null
    timeout: 5000 #redis连接超时时间
    lettuce:
      pool: #连接池配置
        max-active: 20 #连接池最大连接数
        max-wait: -1 #连接池最大阻塞等待时间,-1表示无限等待
        max-idle: 8 #连接池中的最大空闲连接数
        min-idle: 1 #连接池中的最小空闲连接数

2. 解决redis序列化异常,代码如下:

@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport
{
    @Bean
    @SuppressWarnings(value = { "unchecked", "rawtypes" })
    public Redistemplate<String, Object> redistemplate(LettuceConnectionFactory connectionFactory)
    {
        Redistemplate<String, Object> redistemplate = new Redistemplate<>();
        // 1. 配置连接工厂
        redistemplate.setConnectionFactory(connectionFactory);
        // 2. 使用Jackson2JsonRedisSerialize替换认序列化方式(认JDK序列化方式)
        Jackson2JsonRedisSerializer<?> jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer<>(Object.class);
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
        ObjectMapper om = new ObjectMapper();
        // 3. 指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和public
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        // 4. bugFix Jackson2反序列化数据处理LocalDateTime类型时出错
        DateTimeFormatter dtf = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss");
        DateTimeFormatter dtf2 = DateTimeFormatter.ofPattern("yyyy-MM-dd");
        JavaTimeModule javaTimeModule = new JavaTimeModule();
        javaTimeModule.addSerializer(LocalDateTime.class,
                new LocalDateTimeSerializer(dtf));
        javaTimeModule.addDeserializer(LocalDateTime.class,
                new LocalDateTimeDeserializer(dtf));
        javaTimeModule.addSerializer(LocalDate.class,
                new LocalDateSerializer(dtf2));
        javaTimeModule.addDeserializer(LocalDate.class,
                new LocalDateDeserializer(dtf2));
        javaTimeModule.addSerializer(LocalTime.class,
                new LocalTimeSerializer(dtf3));
        javaTimeModule.addDeserializer(LocalTime.class,
                new LocalTimeDeserializer(dtf3));
        om.registerModule(javaTimeModule);
        // 5. 序列化类,对象映射设置
        jackson2JsonRedisSerializer.setobjectMapper(om);
        //使用StringRedisSerializer来序列化和反序列化redis的key值
        redistemplate.setKeySerializer(stringRedisSerializer);
        //使用jackson2JsonRedisSerializer来序列化和反序列化redis的value值
        redistemplate.setValueSerializer(jackson2JsonRedisSerializer);
        // 设置hash key 和value序列化模式
        redistemplate.setHashKeySerializer(stringRedisSerializer);
        redistemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
        //初始化Redistemplate(使用Redistemplate需要先调用方法)
        redistemplate.afterPropertiesSet();
        return redistemplate;
    }
}

3. 示例,代码如下:

@Service
public class SellerLoginService {   
     @Resource
    private Redistemplate redistemplate;

    public BaSEOutput<UserLoginoutput> userLogin(UserLoginInput input) {      
        redistemplate.opsForSet().add("login:"+input.getMobile(),input.getpassword());
        return new BaSEOutput<>(RetCode.SUCCESS.getRetCode(),RetCode.SUCCESS.message,output);
    }
}

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐