首页 > 数据库 >Spring 整合Redis

Spring 整合Redis

时间:2023-07-17 14:46:44浏览次数:34  
标签:redis return name Spring Redis 整合 spring public template

1.配置

application.yml
spring:
application:
name: meter-highway
profiles:
active: druid,mongodb,dubbo,rabbitmq,redis

application-redis.yml
spring:
redis:
database: 9
host: 192.168.13.146
port: 6379
password: Luban376
timeout: 2000

2.依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-data-redis</artifactId>
    </dependency>

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-cache</artifactId>
    </dependency>

3.config Bean

@Configuration
public class RedisConfig extends CachingConfigurerSupport {

@Bean
public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) {
    RedisTemplate<String, Object> template = new RedisTemplate<>();
    template.setConnectionFactory(redisConnectionFactory);

    RedisSerializer<String> stringRedisSerializer = new StringRedisSerializer();
    GenericJackson2JsonRedisSerializer valueSerializer = new GenericJackson2JsonRedisSerializer();
    template.setKeySerializer(stringRedisSerializer);
    template.setHashKeySerializer(stringRedisSerializer);
    template.setValueSerializer(valueSerializer);
    template.setHashValueSerializer(valueSerializer);
    return template;
}
private static String PREFIX = "METER::";
@Bean
public CacheManager cacheManager(RedisConnectionFactory factory) {
    RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig()
            .prefixKeysWith(PREFIX)
            .entryTtl(Duration.ofSeconds(2*60))//过期超时时间 2分钟
            .disableCachingNullValues();

    return new MeterCacheManager(RedisCacheWriter.nonLockingRedisCacheWriter(factory),config);
}

}

public class MeterCacheManager extends RedisCacheManager {

public MeterCacheManager(RedisCacheWriter cacheWriter, RedisCacheConfiguration defaultCacheConfiguration) {
    super(cacheWriter, defaultCacheConfiguration);
}

@Override
protected RedisCache createRedisCache(String name, RedisCacheConfiguration cacheConfig) {
    if(!StringUtils.isEmpty(name) && name.contains("#")) {//#数字是秒
        String numStr = name.split("#")[1];
        if(StringUtils.isNumeric(numStr)) {
            return super.createRedisCache(name, cacheConfig.entryTtl(Duration.ofSeconds(Integer.parseInt(numStr))));
        }
    }
    return super.createRedisCache(name, cacheConfig);
}

}

标签:redis,return,name,Spring,Redis,整合,spring,public,template
From: https://www.cnblogs.com/Acaak/p/17560036.html

相关文章

  • docker分布式存储之哈希槽3主3从redis集群配置+主从扩容缩容
    创建开启六台redis容器systemctlrestartdockerdockerpullredis:6.0.8根据需求下载redis的镜像版本配置3主3从开启六台redis容器分别用node-1~node-6来区分dockerrun-d--nameredis-node-1--nethost--privileged=true-v/tmp/redis/share/redis-node......
  • spring启动流程 (5) Autowired原理
    构造方法参数AutowireBeanClass可以在构造方法上标注@Autowired注解,Spring在创建Bean实例时将自动为其注入依赖参数Spring会优先使用标注@Autowired注解的构造方法当一个构造方法标注了@Autowired注解且required=true时,其余构造方法不允许再标注@Autowired注解当多个构造方法......
  • Java 实现 WebSocket 集群转发:使用 Redis 发布订阅
    场景浏览器客户端client1连接到了服务端A的websocket节点。浏览器客户端通过弹性负载均衡,把请求分配到了服务端B,服务端B上没有client1的连接。需求服务端B把消息转发到服务端A上,找到客户端client1的连接,发送出去。画示意图......
  • 动态配置Redis参数
    在redis的使用过程中,有时候需要急需修改redis的配置,比如在业务运行的情况下,内存不够怎么办,这时要么赶紧删除无用的内存,要么扩展内存。如果有无用的内容可删除那么所有问题都已经解决,如果内容都是重要的,那只能选择扩展内存。CONFIGSET具体含义1CONFIGSETparametervalue2......
  • Redis多级缓存
    什么是多级缓存传统缓存的问题传统的缓存在请求到达Tomcat后,先查询Redis,如果未命中则查询数据库,存在以下问题:请求要经过Tomcat处理,Tomcat的性能成为整个系统的瓶颈Redis缓存失效时,会对数据库产生冲击多级缓存就是充分利用请求处理的每个环节,分别添加缓存,减轻Tomcat压力,提......
  • Spring
    1.注解 @Value使用在字段或方法上,用于注入普通数据 一般用于注入配置信息 @Autowired使用在字段或方法上,用于根据类型注入引用数据 @Qualifier使用在字段或方法上,结合@Autowired,根据名称注入 @Resource使用在字段或方法上,根据类型或名称进行注入2.spring的其......
  • springboot中静态资源的访问相关知识
    一、基本介绍:(一)、只要静态资源放在类路径下(什么是类路径:在resources文件下)默认是这几个目录文件:/static、/public、/resources、/META-INF/resources等目录下的文件直接能够被访问(二)、常见的静态资源:Js、css、图片(jbg、png、svg、gif、bmp)、字体文件(fonts)等(三)、访问方式:......
  • redis序列化配置
    redis序列化配置@ConfigurationpublicclassRedisTemplateConfiguration{/***@paramredisConnectionFactory*@return*/@BeanpublicRedisTemplate<Object,Object>redisTemplate(RedisConnectionFactoryredisConnectionFactory){......
  • springboot或spring中使用编程式事务和声明式事务
    转载:https://developer.aliyun.com/article/789471https://www.bilibili.com/video/BV1q14y1m7B6/?spm_id_from=333.788.recommend_more_video.1&vd_source=46d50b5d646b50dcb2a208d3946b1598事务失效场景......
  • 如何在.NET Core中使用redis
    一、1.添加Redis依赖项:在.NETCore项目中,你需要添加对StackExchange.Redis库的引用。你可以通过NuGet包管理器或手动添加依赖项来完成此操作。2. 配置Redis连接:在appsettings.json文件中,添加Redis连接配置。例如:"Redis":{"ConnectionString":"localhost:6379"}3.......