首页 > 编程语言 > 详细

springboot Redis 缓存

时间:2018-08-14 13:10:17      阅读:206      评论:0      收藏:0      [点我收藏+]

可以使用内存作为缓存,也可以使用 Redis 作为缓存,内存的弊端是集群的多个实例不发同步

1,添加依赖

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

2,配置文件中配置 Redis 数据源

spring.cache.redis.time-to-live:3600s  # 默认不过期,设置一个时间表示过期时间
redis.host=localhost # ip
redis.port=6379 # 端口
redis.jedis.pool.max-active=5 # 连接池
redis.jedis.pool.max-idle=10
redis.jedis.pool.max-wait=10000

3,启动类添加 @EnableCaching 注解

4,在方法上添加 @Cacheable/@CacheEvict/@CachePut 注解或在类上添加 @CacheConfig 注解

@Cacheable 获取缓存(不运行方法),如果没有就运行方法取得并把值放入缓存
@CacheEvict 删除缓存(这个方法每次都会执行,然后去通过方法的返回值去查,有就删除)
@CachePut 更新缓存(这个方法也是每次都执行,通过方法返回值去查,如果有就更新,没有就添加)
@CacheConfig 这个是写在类上面的,用于简化上面3个注解

示例:

示例1:
@Cacheable(cacheNames="user", key="#id")
public User getUserById(int id){}
示例2:
@CachePut(cacheNames="user", key="#user.id")
public User updateUserById(User user){}
示例3:
@CacheEvict(cacheNames="user")
public User deleteUserById(int id){}
// 如果参数是基本类型,那么 key 默认就是他,比如 示例3 中没有写 key,其实和 示例1 是一样的
示例4:
@CacheConfig("user")
public class UserService{
  @Cacheable
  public User getUserById(int id){}
  @CachePut(key="#user.id")
   public User updateUserById(User user){}
}

注意:和异步执行类似,只能在外部调用才会生效

 

springboot Redis 缓存

原文:https://www.cnblogs.com/huanggy/p/9473822.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!