springboot整合redis实现缓存

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
    <version>1.5.2.RELEASE</version>
</dependency>
spring:
  redis:
    ##默认redis客户端连接为0 可修改
    database: 0
    host: 127.0.0.1
    port: 6379
    cache_name: XiChuanRedis
    ##password:
    pool:
      ##连接池最大空闲连接
      max-idle: 8
      min-idle: 0
      max-active: 8
      max-wait: 1
    timeout: 5000
@Configuration
@EnableCaching//启用缓存
public class RedisConfig extends CachingConfigurerSupport{

    @Value("${spring.redis.cache_name}")
    private String cacheName;

    @SuppressWarnings("rawtypes")
    @Bean
    public CacheManager cacheManager(RedisTemplate redisTemplate) {
        RedisCacheManager rcm = new RedisCacheManager(redisTemplate);
        // 多个缓存的名称,目前只定义了一个
        rcm.setCacheNames(Arrays.asList(cacheName));
        //设置缓存过期时间(秒)
        rcm.setDefaultExpiration(6000);
        return rcm;
    }

    @Bean
    public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) {
        StringRedisTemplate template = new StringRedisTemplate(factory);
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        jackson2JsonRedisSerializer.setObjectMapper(om);
        template.setValueSerializer(jackson2JsonRedisSerializer);
        template.afterPropertiesSet();
        return template;
    }
}
@Component
public classBaseServiceImpl{

    @Autowired
    ParamRepository paramRepository;

    @Cacheable(value="XiChuanRedis", key="‘sign_test‘")
    public String getNotFinishedTypeCode(){
        List<Param> params = paramRepository.findBySpiderOver(0);

        if(params != null && params.size() > 0){
            return  params.stream()   //先将List按照id进行排序,然后取出最上面的那个,然后取出第一个
                    .sorted(Comparator.comparing(HeiGuangParam::getId))
                    .collect(Collectors.toList())
                    .get(0)
                    .getTypeCode();
        }else{   //如果没有就返回null
            return null;
        }
    }

    /**
     * 更新param后,需要将redis中的值移除
     * @param param
     */
    @CacheEvict(value="XiChuanRedis", key="‘sign_test‘")
    public void updateParamByTypeCode(Param param){
        paramRepository.save(param);
    }
}

@Cacheable:如果redis在相同的Cache有相同的key的缓存元素时,就会直接在redis缓存中,根据key读取缓存并返回结果;如果没有,则先调用方法,将返回值写入到redis缓存中,然后返回结果。它的属性有:value、key、condition

value:指定是哪一个Cache,可以指定多个Cache。例如:@Cacheable({"cache1", "cache2"})

key:缓存的key,当在清楚缓存时要与此对应。

1.key为null,则使用默认key。

2.key为一个字符串,例如:@CacheEvict(value="XiChuanRedis", key="‘department_code_‘")。
3.key为方法中的一个方法上的一个属性,例如:

@CacheEvict(value="XiChuanRedis", key="‘code_‘+#departmentCode")
public String getNameByCode(String departmentCode){
}

4.key为方法中的一个方法上的一个实体的属性,例如:

@Cacheable(value="XiChuanRedis", key="‘userid_‘+#user.id")
public User getUserById(Integer id){
}

condition:缓存条件,可以直接为null,例子如下:

@Cacheable(value="XiChuanRedis", key="‘userid_‘+#user.id", condition="#user.id%2==0")
public User getUserById(Integer id){
}

原文地址:https://www.cnblogs.com/dkws/p/12551443.html

时间: 2024-10-07 22:24:46

springboot整合redis实现缓存的相关文章

SpringBoot 整合 Redis缓存

在我们的日常项目开发过程中缓存是无处不在的,因为它可以极大的提高系统的访问速度,关于缓存的框架也种类繁多,今天主要介绍的是使用现在非常流行的NoSQL数据库(Redis)来实现我们的缓存需求. SpringBoot整合Redis是非常方便快捷的,我用的是Mybatis,这里就不说Springboot整合Mybatis了网上有很多,同样非常简单. 下面进入正题: 原文地址:https://www.cnblogs.com/yueguanguanyun/p/9756058.html

九、springboot整合redis二之缓冲配置

1.创建Cache配置类 @Configuration @EnableCaching public class RedisCacheConfig extends CachingConfigurerSupport { @Value("${redis.cache.expiration}") private Long expiration; /** * * 管理缓存 */ @Bean public CacheManager cacheManager(RedisTemplate<Obje

SpringBoot整合Redis并完成工具类

SpringBoot整合Redis的资料很多,但是我只需要整合完成后,可以操作Redis就可以了,所以不需要配合缓存相关的注解使用(如@Cacheable),而且我的系统框架用的日志是log4j,不是SpringBoot默认的Logback.通过查询资料我完成了Redis整合,并写了Redis操作工具类.特意在此记录一下,分享给大家,也方便以后查阅. 1.SpringBoot版本如下 <parent> <groupId>org.springframework.boot</gr

超简单!!!SpringBoot整合Redis

1.导入Pom.xml依赖 1 <?xml version="1.0" encoding="UTF-8"?> 2 <project xmlns="http://maven.apache.org/POM/4.0.0" 3 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 4 xsi:schemaLocation="http://maven.ap

Spring Boot 学习----SpringBoot整合Redis

SpringBoot整合Redis 说明:由于使用的是window系统,所以本文中使用的redis是再Docker中运行的. 至于如何启动redis这里不再说明,需要的请自行百度. 配置pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-data-redis</artifactId> </depend

三:Springboot整合Redis

一:springboot整合redis redis版本:3.0.0 运行环境:linux 1.安装redis 1.1安装gcc yum install gcc-c++ 1.2解压redis.3.0.0.tar.gz压缩包 tar -zxvf redis-3.0.0.tar.gz 1.3进入解压后的目录进行编译 cd redis-3.0.0 make 1.4将redis安装到指定目录 make PREFIX=/usr/local/redis install 1.5启动redis ./redis-s

Spring Boot 整合Redis 实现缓存

本文提纲 一.缓存的应用场景 二.更新缓存的策略 三.运行 springboot-mybatis-redis 工程案例 四.springboot-mybatis-redis 工程代码配置详解 运行环境: Mac OS 10.12.x JDK 8 + Redis 3.2.8 Spring Boot 1.5.1.RELEASE 一.缓存的应用场景 什么是缓存? 在互联网场景下,尤其 2C 端大流量场景下,需要将一些经常展现和不会频繁变更的数据,存放在存取速率更快的地方.缓存就是一个存储器,在技术选型

(转)Spring整合Redis作为缓存

采用Redis作为Web系统的缓存.用Spring的Cache整合Redis. 一.关于redis的相关xml文件的写法 <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:cache="http://www.springframework.org/schema/c

八、springboot整合redis

整合Redis 一. 注解方式实现添加缓存 1.在pom.xml加入依赖 <!-- 配置使用redis启动器 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dependency> 2. 修改引导类 修改开启缓存,添加注解@EnableCachi