栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Redis 请求缓存简单了解下

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Redis 请求缓存简单了解下

希望能对正在学习java的朋友提供一点帮助

package com.xxxx.demo;

import com.fasterxml.jackson.annotation.JsonAutoDetect;
import com.fasterxml.jackson.annotation.JsonTypeInfo;
import com.fasterxml.jackson.annotation.PropertyAccessor;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypevalidator;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.*;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.StringRedisSerializer;

import java.time.Duration;

@Configuration
public class RedisConfig extends CachingConfigurerSupport {
    
    @Bean
    public RedisTemplate getRedisTemplate(RedisConnectionFactory redisConnectionFactory){
        RedisTemplate template =new RedisTemplate();

        //Object.class在反序列化的时候不设置ObjectMapper 会生成linkedHashMap类型 返回纯json数据
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper objectMapper = new ObjectMapper();
        

        objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        objectMapper.activateDefaultTyping( LaissezFaireSubTypevalidator.instance ,ObjectMapper.DefaultTyping.NON_FINAL,
                JsonTypeInfo.As.PROPERTY);
        jackson2JsonRedisSerializer.setObjectMapper(objectMapper);
        
        //为string类型的key设置序列化器
        template.setKeySerializer(new StringRedisSerializer());
        //为string类型的values设置序列化器
        template.setValueSerializer(jackson2JsonRedisSerializer);
        //为hash类型的key设置序列化器
        template.setHashKeySerializer(new StringRedisSerializer());
        //为hash类型的values设置序列化器
        template.setHashKeySerializer(jackson2JsonRedisSerializer);
        template.setConnectionFactory(redisConnectionFactory);  //必须添加 redis工厂
        return template;

    }
    //缓存配置管理器
    @Bean
    public RedisCacheManager cacheManager (RedisConnectionFactory redisConnectionFactory) {
        RedisCacheConfiguration redisCacheConfiguration = RedisCacheConfiguration.defaultCacheConfig()
                .entryTtl(Duration.ofHours(7))   // 设置缓存过期时间
            //  .disableCachingNullValues()     // 禁用缓存空值,不缓存null校验
                .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(new StringRedisSerializer()))
                //  注意GenericJackson2JsonRedisSerializer反序列化时没有类型
                // 正常应使用自定义的序列化器
                .serializevaluesWith(RedisSerializationContext.SerializationPair.fromSerializer(new GenericJackson2JsonRedisSerializer()));
                 //cacheDefaults必须第一个配置 否则运行默认配置
        return RedisCacheManager.builder(redisConnectionFactory).cacheDefaults(redisCacheConfiguration).build();     // 设置默认的cache组件

    }
}

yml中redis简单配置

spring:
  redis:
    timeout: 10000  #连接超时时间
    host: #########  #redis的服务地址
    port: 6379      #redis端口号
    password: root  #redis服务器密码
    database: 0     #选择哪个库 默认为0库
    lettuce:
      pool:
        max-active: 1024  #最大连接数 默认为8
        max-idle: 200     #最大空闲连接 默认为8
        max-wait: 10000  #最大连接阻塞等待时间 单位毫秒 默认为-1 不限制
        min-idle: 5      #最小空闲默认为0
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/731709.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号