点击上方 好好学java ,选择 星标 公众号

重磅资讯、干货,第一时间送达

今日推荐:硬刚一周,3W字总结,一年的经验告诉你如何准备校招!

 个人原创100W+访问量博客:点击前往,查看更多

作者:小李子说程序

https://www.toutiao.com/i6903746076747104772/

前言

看到同事手动写的缓存代码,我实在是看不下去了,于是决定改造一下,最终达到自动Redis缓存,不用手动去set了。

使用场景

实时性要求不那么高的业务数据,我们可以在Service上进行一些缓存的操作。这样就可以减少访问数据库的频率。(脱离的场景的技术都是在纸上谈兵)

实战

1 话不多说,上代码自动化配置

源码

import java.time.Duration;import org.springframework.cache.CacheManager;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.cache.RedisCacheConfiguration;
import org.springframework.data.redis.cache.RedisCacheManager;
import org.springframework.data.redis.cache.RedisCacheWriter;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.RedisSerializationContext;
import org.springframework.data.redis.serializer.RedisSerializer;
@Configuration
public class RedisConfig {/*** SpringBoot配置redis作为默认缓存工具* SpringBoot 2.0 以上版本的配置*/@Beanpublic CacheManager cacheManager(RedisConnectionFactory redisConnectionFactory) {//初始化一个RedisCacheWriterRedisCacheWriter redisCacheWriter = RedisCacheWriter.nonLockingRedisCacheWriter(redisConnectionFactory);//设置CacheManager的值序列化方式为json序列化RedisSerializer<Object> jsonSerializer = new GenericJackson2JsonRedisSerializer();RedisSerializationContext.SerializationPair<Object> pair = RedisSerializationContext.SerializationPair.fromSerializer(jsonSerializer);RedisCacheConfiguration defaultCacheConfig=RedisCacheConfiguration.defaultCacheConfig().serializeValuesWith(pair)//设置默认超过期时间是30秒.entryTtl(Duration.ofSeconds(30));//初始化RedisCacheManagerreturn new RedisCacheManager(redisCacheWriter, defaultCacheConfig);}
}

2 启用缓存注解

3 使用注解,实现curd

3.1 查询 使用 @Cacheable

3.2 增加或修改使用 @CachePut

3.3 删除用 @CacheEvict

推荐文章
  • 硬刚一周,3W字总结,一年的经验告诉你如何准备校招!

  • 今年的校招,Java 好拿 offer 吗?

  • 10月了,该聊聊今年秋招了!

  • 聊聊在腾讯实习快一个月的感受

原创电子书历时整整一年总结的 Java 面试 + Java 后端技术学习指南,这是本人这几年及校招的总结,各种高频面试题已经全部进行总结,按照章节复习即可,已经拿到了大厂offer。
原创思维导图扫码或者微信搜 程序员的技术圈子 回复 面试 领取原创电子书和思维导图。

求求你不要手写redis 缓存set,get相关推荐

  1. go redis 序列化_求求你不要手写Redis缓存

    不点蓝字,我们哪来故事? 前言 看到同事手动写的缓存代码,我实在是看不下去了,于是决定改造一下,最终达到自动Redis缓存,不用手动去set了. 使用场景 实时性要求不那么高的业务数据,我们可以在Se ...

  2. node怎么把token放到redis_从零开始手写 redis(八)朴素 LRU 淘汰算法性能优化

    前言 java从零手写实现redis(一)如何实现固定大小的缓存? java从零手写实现redis(三)redis expire 过期原理 java从零手写实现redis(三)内存数据如何重启不丢失? ...

  3. 手写redis@Cacheable注解 支持过期时间设置

    原理解释 友情链接  手写redis @ Cacheable注解参数java对象作为键值 @Cacheable注解作用,将带有该注解方法的返回值存放到redis的的中; 使用方法在方法上使用@Cach ...

  4. redis setnx 分布式锁_手写Redis分布式锁

    分布式锁使用场景 现在的系统都是集群部署,每个服务都不是单节点的了.比如库存服务,可能部署到3台机器上分别命名为节点1,节点2,节点3.库存服务需要扣减库存,扣减库存肯定需要锁吧,如果使用Lock或者 ...

  5. hashmap remove 没释放内存_java从零开始手写 redis(13)HashMap 源码原理详解

    为什么学习 HashMap 源码? 作为一名 java 开发,基本上最常用的数据结构就是 HashMap 和 List,jdk 的 HashMap 设计还是非常值得深入学习的. 无论是在面试还是工作中 ...

  6. java icache_java手写多级缓存

    多级缓存完成类,时间有限,该类未抽取接口,目前只支持两级缓存:JVM缓存(完成请查看上一篇:java手写JVM高性能缓存).redis缓存(在spring的redisTemplate根底完成) 复制代 ...

  7. 手写图片缓存框架 ImageLoader

    图片缓存是App开发中最常见的,本篇博文给大家带来自己手写的图片缓存框,大致的思路很简单,首先从内存中获取图片,如果内存中没有,就从手机本地进行获取,如果还没有,就从网络访问进行获取. 所以,我们在I ...

  8. redis重启会清除数据吗_从零开始手写 redis(三)内存数据重启后如何不丢失?...

    前言 我们在 从零手写 cache 框架(一)实现固定大小的缓存 中已经初步实现了我们的 cache. 我们在 从零手写 cache 框架(一)实现过期特性 中实现了 key 的过期特性. 本节,让我 ...

  9. 手写Redis服务端,从设计者的角度聊一聊Redis本身

    [文章来源]https://sourl.cn/mqFYeU 零,起因 我为什么要造redis这个轮子?1 破除对redis神秘感.2 "基础服务中台"的同事们在开会讨论redis云 ...

最新文章

  1. 机器学习(7)--VC维数
  2. MIT Kimera阅读笔记
  3. dns服务期搭建使用_DNS添加反向查找区域
  4. python 爬虫难吗_python写爬虫难吗
  5. python的表达式范围怎么写_python表达式
  6. 10.08-vscode-plantuml建模
  7. 关于kv的jch分片存储
  8. 一道面试题:遇到大规模Oracle坏块该怎么处理?
  9. 20复变函数的积分(六)
  10. java成员修饰词 友好的_Java的类成员访问权限修饰词(以及类访问权限)
  11. Linux多线程通信
  12. svn checkout的时候报E000022错误
  13. Linux与FreeBSD的多网卡绑定增加服务器流量
  14. 11. 数值的整数次方
  15. SpringMVC整合Quartz实现定时任务和Spring自带Task定时任务
  16. 批量制作通知书会议邀请函等模板式文本并快速批量发送邮件
  17. 动手学深度学习day-two
  18. v3.exo是什么文件_exo文件是什么东西 exo体又是什么东西
  19. 靠2块钱月入4万:越朴素的方法,往往越挣钱
  20. 蓝海创意云丨干货:V-Ray渲染后期处理雪中建筑效果图

热门文章

  1. ACM 进阶计划~~转
  2. i2c- sda挂死分析
  3. 【ESP8266】NONOS SDK开发,发送HTTP请求
  4. kthread_run创建内核线程的原理
  5. PKI/CA (5)X.509公钥证书
  6. java元婴期(30)----java进阶(springmvc(4)---参数绑定(下)springmvc校验异常处理)
  7. java结丹期(15)----javaweb(maven(1))
  8. HDU1159(dp最长公共子序列)
  9. 基于SEAL库实现PSI-报错实录2
  10. shell中三种引号的区别