记 RedisTemplate 和 Cacheable 注解

  最近一直在找关于 redisTemplate 和 redisCache等一系列注解的区别。奈何没有找到。所以自己写了demo试下

  首先,单从操作Redis来说,我觉得两者并没有什么区别。但是 redisCache 从单词就可以看出。这个是缓存效果。即不经过任何的关系型和非关系型数据库。

   先是 redisTemplate 操作redis,当redis中没有当前的key时,查找sql插入redis返回的时间

   

   当再次执行查找操作,由于redis中已经存储了当前键的信息,不需要再去数据库执行查找操作,所以时间很快

    

   我们比较下 @Cacheable 注解所带来的效果。

   同样的第一次redis中是没有数据的,所以执行了redis的添加操作。

记 RedisTemplate 和 Cacheable 注解_第1张图片

记 RedisTemplate 和 Cacheable 注解_第2张图片

可以看到有一行红字 “获取数据并放入缓存“,这是我在执行sql之前所打印的。查询加插入sql耗时31毫秒

当再次执行该接口时,连打印的那行红字都没有了。这就是注解的效果。通过注解直接跳过方法从缓存中取出数据。

当我们清空redis中的数据的时候。直接用redisTemplate操作redis是读取不到刚才的数据的。但是如果用 @Cacheable 注解我们还是能拿到刚才插入的数据,这点有点类似于mybaits的缓存机制。

但是启用 @Cacheable 注解要注意,如果redis中没有数据的情况下,必须在设定的时间范围内才可以拿到放到缓存中的数据,超过了这个时间也是无效的。

类似于 redisCache(查找,没有就新增) 的注解还有 @cacheEvict(删除缓存中以及redis中的数据),@CachePut(更新缓存和redis的数据).

相比 redisTemplate 。注解的优势更在于省去了逻辑判断的代码。比如以前操作 redisTemplate 时候需要先从redis里查询有没有该值,没有就新增,有就直接拿出来。而注解相当于帮我们做了这一部分的逻辑判断。

附:这是我个人的见解。。。如有分析错误请多多包涵。

 

你可能感兴趣的:(记 RedisTemplate 和 Cacheable 注解)